瀏覽器從本地“index.html”-file 重定向到“file:///”-root
我下載了網站https://www.untools.co/
wget --mirror --convert-links https://www.untools.co/
並在我的文件系統上有相應的頁面:
當我
untools.co/index.html
用 Firefox 打開時,我可以看到頁面半秒鐘,然後我被重定向到file:///
.我不認為這是 html 文件的問題,因為當我使用 Firefox 在虛擬機的 Windows 中打開它們時,我沒有任何問題。
不僅 Firefox 如此,Chrome、Brave、Konqueror 等瀏覽器也是如此,所以我想這一定是我的 Kubuntu 20.04 的問題。
或者可能是其他一些奇怪的重定向正在進行,我不知道。例如在https://help.dreamhost.com/hc/en-us/articles/215747748-How-can-I-redirect-and-rewrite-my-URLs-with-an-htaccess-file-我讀到了如何從 index.html 重定向 - 但是,我想確保我不會被重定向。
正如我們在評論中所述,您的第一個問題是 main
index.html
包含一些嵌入的 Javascript,這些 Javascript 會強制重定向到/
. 這對於一個網站來說是有意義的,類似的東西http://example.com/foo/
會重定向到http://example.com/
,但是在通過文件系統訪問東西時它的用處不大,它最終會將你重定向到文件系統根目錄。最簡單的解決方案可能是執行本地網路伺服器。正如您所建議的,
python3 -m http.server
通常是一個不錯的選擇,並且成功地服務於index.html
.當您點擊“Minto 金字塔”連結時,您會看到指向
/minto-pyramid
. 您現在遇到的問題是這minto-pyramid
是一個沒有副檔名的文件,因此 Python 的 http 伺服器無法知道要使用哪種 MIME 類型。它作為application/octet-stream
文件傳遞到您的瀏覽器,因此您的瀏覽器會假定它不是可以顯示的內容,並提示您將其保存到文件中。最快的解決方案是設置一個預設
text/html
為沒有可辨識副檔名的文件鍵入的網路伺服器。您可以使用darkhttpd直接從命令行執行此操作,它可以為您的發行版打包,如下所示:darkhttpd . --port 8000 --default-mimetype text/html
但是,如果將其放入
server.py
與以下目錄相同的目錄中,則可以使用 Python 執行相同的操作index.html
:import http.server from http.server import HTTPServer, BaseHTTPRequestHandler import socketserver Handler = http.server.SimpleHTTPRequestHandler Handler.extensions_map = { ".html": "text/html", ".png": "image/png", ".jpg": "image/jpg", ".svg": "image/svg+xml", ".css": "text/css", ".js": "application/javascript", "": "text/html", # Default } httpd = socketserver.TCPServer(("", 8000), Handler) httpd.serve_forever()
然後執行它:
python3 server.py
這兩種解決方案都可以讓您點擊
minto-pyramid
連結並將其顯示在瀏覽器中。