浏览器从本地“index.html”文件重定向到“file:///”-root

浏览器从本地“index.html”文件重定向到“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 重定向 - 但是,我想确保我不会被重定向。

答案1

正如我们在评论中所述,您的第一个问题是 mainindex.html包含一些嵌入式 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没有可识别扩展名的文件。您可以直接从命令行执行此操作暗httpd,它可能会打包供您的发行版使用,如下所示:

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链接并将其显示在浏览器中。

相关内容