在我的实时网站上跟随 ../ link 的行为与使用 vscode 和 Chrome 开发它时的行为不同

Following a ../ link on my live site behaves differently then when developing it with vscode and Chrome

在调试我的网站时,我注意到发生了一件奇怪的事情。假设 html 文件有一个像这样的超链接:

<a href="../">This hyperlink uses "../" to take you back one directory</a>

如果我在 vscode 中调试我自己的站点并使用 chrome,如果我单击它,它会给我一个奇怪的页面,上面写着“/Users/myusername/code/public_html/aboutme/ 的索引”并显示该目录中的所有文件。但是当我将文件上传到主机时,一切正常。为什么是这样?我怀疑这可能与“index.html”的工作方式有关。

A 典型 服务于静态文件的 HTTP 服务器的配置(即将 URLs 直接映射到文件系统上的文件)是,如果 URL 映射到一个目录,然后查找名为 index.html(或类似文件)的文件并用该文件进行响应。

例如,当使用 Apache HTTPD 时,这由 DirectoryIndex directive 处理。

在处理 file:/// 方案 URL 时,没有可以进行映射的 HTTP 服务器和处理 file:/// 方案 URL 的浏览器内部代码s也不做。

这是因为您的服务器有一个 .htaccess 文件(在大多数情况下),它会查找并在可以找到 index.html 文件时显示该文件。您的本地文件系统没有,所以只会显示目录。

编辑:.htaccess 文件基本上确保网站用户不会看到一些令人困惑的页面,他们必须 select 一个页面才能查看。