Jekyll + GitHub Pages网站中的尾部斜杠导致404

时间:2019-02-16 21:05:06

标签: url yaml jekyll config github-pages

我希望在我的网站(由Jekyll构建并托管在GitHub Pages)上解析以下所有URL:

在本地它们都可以正常工作,但是现在在实时站点上,第一个和第三个选项可以解决,但是中间带有斜杠的则导致404错误。

我目前不在使用永久链接。当我permalink: /about/添加到页面的最前面时,尾部的斜杠问题已解决,但是about.html则执行了404。我认为这比当前行为更好但是我希望所有这三个选项都可以单独工作还是重定向到可以的工作。

如果相关,我可以在布局模板的<head>中设置一个规范引用,如下所示:

<link rel="canonical" href="{{ site.url }}{{ page.url | replace:'index.html',''}}">

这是我的_site的文件树:

enter image description here

3 个答案:

答案 0 :(得分:1)

根据GitHub的支持,这是GitHub Pages中的预期行为:

  

迈克尔你好,

     

感谢您与GitHub支持人员联系有关GitHub的问题   页面。

     

目前无法在以下位置更改我们的斜杠行为   这次,尽管我确实了解到这种情况可能是   相当令人沮丧。

     

我将与团队分享您的用例,以供将来考虑   改进。我不能说是否或何时会发生变化,但是您   反馈权掌握在右手。

     

谢谢

     

Steve @slgraff GitHub支持

答案 1 :(得分:1)

已解决:遇到同样的问题并通过更新 _config.yml 中的永久链接设置来修复它

在那里添加尾部斜杠。缺少尾部斜杠的 URL 将重定向到 /:name/

https://jekyllrb.com/docs/permalinks/

collections:
  my_collection:
    output: true
    permalink: /:collection/:name/

答案 2 :(得分:0)

因此,如果您在本地构建站点时查看生成的_site文件夹,则会看到应该包含以下内容:

_site
  |--about
  |   |--index.html
  |   |
...

最后使用永久链接/about//表示Jekyll将创建about文件夹,然后在内部创建index.html页面。由于历史上的优先顺序,它称为index.html。当没有特定的文件要检索时,浏览器默认会寻找该页面。

牢记这一点,这三个选项分别发生以下情况:

  1. /about:浏览器足够聪明,足以知道要插入结尾的/,因此会在/about/文件夹中查找。您没有指定要查找的特定文件,因此它默认为寻找index.html。它会找到index.html并将其呈现。
  2. /about/:与上述相同。它位于/about/文件夹中。由于未指定任何特定文件,因此它将查找index.html。它会找到index.html并将其呈现。
  3. /about.html:浏览器正在专门寻找位于根文件夹中的名为about.html的文件。 /about/index.html在那里,但这不是浏览器正在寻找的东西。 about.html不存在,因此会抛出404。

因此,没有错误。当您在网址中给结尾/时,浏览器就是这样。