为什么我的默认 Jekyll 链接在我的实时站点上不起作用?仅限本地?

Why don't my default Jekyll links work on my live site? Only locally?

我在很多项目中都使用 Jekyll,但从未遇到过这个问题。

基本上,我的网站在本地运行良好,但如果我构建并上传到 mydomain.com 突然 none 基本页面 links(全部转到“ mydomain.com/page") 不起作用。如果我手动将它们设置为“mydomain.com/page.html”,它们就会工作,但不会像通常只有“mydomain.com/page”

我的配置和设置非常简单:

baseurl: ""
url: "mydomain.com"

header_pages:
  - index.md
  - dates.md

我正在使用 shell 主题:https://tareqdandachi.github.io/jekyll-shell-theme/

两个页面:index.md 和 dates.md,都设置为:

---
layout: home
permalink: /
permalink_name: /home
title: Home
---

---
layout: page
permalink: /dates
permalink_name: /dates
title: Dates
---

但是如果我点击导航栏中的 link 到日期,我只会得到一个默认的 'Not found' 错误(不是 Jekyll 中配置的 404 错误)。

那么,'/page' 类型 link 的 none 好像在工作?但是如果它是 'page.html'

它们就可以工作

这是怎么回事?是不是很明显?可能是我的服务器配置有误?

jekyll serve 命令以相当宽松的规则启动 Web 服务器,以支持广泛的潜在生产设置。这些规则可能与您的生产 Web 服务器不匹配。解决方案是找到一个适用于两者的方案。

例如,jekyll serve/about.html 服务(根据记忆):

  • /about.html
  • /about
  • /about/
  • /about/index.html

我更喜欢在永久链接上使用尾部斜杠,因为几乎所有地方都默认支持它。这意味着 Jekyll 正在将文件输出到 /about/index.html,但您可以使用 /about/.

访问它

您绝对可以使用无扩展名的 URL(现在这很常见),通常您必须设置网络服务器,以便它知道在请求 /about 时提供 /about.html .您可能还想将 /about/ 重定向回 /about,反之亦然 - 在这一点上它有点主观。