为`_collection / foo.md`生成的链接`/ foo`在本地不起作用(但在Github页面上有效)

时间:2017-09-21 17:13:16

标签: jekyll github-pages

我的Jekyll项目中有以下文件结构:

├── _articles
│   ├── bar
│   │   └── widget.md
│   ├── bar.md
│   └── phone.md
└── foo.md

见这里:https://github.com/janpio/jekyll-test

_articles_config.yml中定义的集合:

collections:
  articles:
    title: Articles
    output: true
    permalink: :path

在Github Pages上,这些内置于这些URI中:

  1. https://janpio.github.io/jekyll-test/bar/widget
  2. https://janpio.github.io/jekyll-test/bar
  3. https://janpio.github.io/jekyll-test/phone
  4. https://janpio.github.io/jekyll-test/foo/
  5. 见这里:https://janpio.github.io/jekyll-test/

    这一切都很好并且符合预期。

    但当我bundle exec jekyll s本地项目 1 时,它的工作方式不同。我得到了预期的URI:

    1. http://127.0.0.1:4000/bar/widget
    2. http://127.0.0.1:4000/bar
    3. http://127.0.0.1:4000/phone
    4. http://127.0.0.1:4000/foo/
    5. 但问题是#2被重定向到127.0.0.1:4000/bar/并显示目录列表而不是实际页面!

      查看_site这是生成的文件结构:

      ├── bar
      │   └── widget.html
      ├── bar.html
      ├── foo.html
      ├── index.html
      └── phone.html
      

      因此,我可以bar.md访问http://127.0.0.1:4000/bar.html

      我该如何解决这个问题?

      1 My Gemfile的环境应与Github Pages相同:https://github.com/janpio/jekyll-test/blob/master/Gemfile

      Jekyll 3.6.x的更新

      3.6.0 Jekyll release changed this behaviour

        

      修复与目录(#6222)(#6231

      冲突的服务文件

      不幸的是,这些更改并没有真正解决问题,而是将其替换为不太严重的问题:现在链接doesn't show the directory listing any more but the correct page,但路径仍然不同,因为它会在/处添加{{1}}结束。不幸的是作为回归bar/widget doesn't render the correct content any more but shows bar.md

2 个答案:

答案 0 :(得分:1)

这些是我想到的第一个解决方案:

  1. 停止使用'漂亮的网址'
  2. 仅使用index.md文件(每个文件位于单独的文件夹中)
  3. 防止命名文件夹和文件之间的冲突
  4. 在bar文件夹中创建一个index.html文件,该文件重定向到bar.html(尽管可能会创建重定向循环)

答案 1 :(得分:0)

Jekyll 3.7.x的更新

3.7.0 Jekyll发布包含一个PR应该解决这个问题: return correct file in dir if dir has same name as file