为什么我的本地 html 链接会转到父文件夹而不是 .html?

Why are my local html links going to parent folder instead of the .html?

编辑:Waylan 的回答成功了!谢谢!

我正在尝试压缩 .html 文档文件以发送给客户。目标是获得与浏览实际网站相同的体验。

打开 .html 文件时,单击的任何 link 都会转到父文件夹,而不是特定的 .html。例如,如果我单击配置页面的 link,它会将我带到这个父文件夹(如图所示),并带有 index.html 到实际页面。这仅在我浏览 .html 文件时发生在我的本地实例中——而不是在我导航构建的 .md(使用 MkDocs)时发生。

您可能想在 mkdocs.yml 配置文件中设置 use_directory_urls: false

您看到的行为是基于网络服务器的一项功能。如果您请求目录(例如 /foo/),则服务器将 return 该目录 (/foo/index.html) 中的索引页。 MkDocs 利用此功能提供 "pretty URLs"(没有文件扩展名的 URL)。

因此,在构建站点时,MkDocs 会将每个页面转换为目录中的索引文件,并且还会重写所有内部链接以指向这些位置。只要页面托管在配置为提供索引页面的服务器上(大多数默认情况下),这就不是问题。

但是,如果您在没有网络服务器的情况下在本地浏览文件,或者碰巧使用的服务器未配置为处理索引文件,那么您将看到您所获得的行为。您有两个选择:

  1. 使用正确配置的服务器。
  2. 使用 MkDoc' use_directory_urls 配置设置关闭该功能。

要执行后者,请将以下内容添加到您的 mkdocs.yml 配置文件中:

use_directory_urls: false

然后用 mkdocs build 重建站点。现在您的页面将不再是索引文件。

请注意,虽然这允许您在没有服务器的情况下浏览文件(使用 file:///),但由于浏览器安全策略,搜索将不再在 MkDocs 站点内工作。因此,建议您始终使用服务器。这也解释了为什么默认配置需要服务器。