Ubuntu

瀏覽器從本地“index.html”-file 重定向到“file:///”-root

  • July 1, 2022

我下載了網站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 重定向 - 但是,我想確保我不會被重定向。

正如我們在評論中所述,您的第一個問題是 mainindex.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連結並將其顯示在瀏覽器中。

引用自:https://unix.stackexchange.com/questions/708287