12

我在这里束手无策。我一直在尝试查看我能找到的所有其他示例 github 项目页面,甚至是博客,但没有一个显示出我遇到的问题。首先,我正在尝试为我的仓库创建一个项目页面。我通过遵循通常的教程来做到这一点,在我的项目 repo 中创建一个 gh-pages 分支并推送。

我设法做到了这些并模板化了我的文件。我什至设法使用了 HAML 和 SASS(它们仍然都转换为 html/css,这就是我推送到 repo 的内容,所以那里没有问题)。我只是认为我配置我的 jekyll 错误。首先,我在其他人的页面中没有看到任何使用 config.yml 上的 baseurl 或 url 的配置。

我的问题是循环浏览我的帖子时:

{% for post in site.posts %}
  <a href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}

它总是将 href 生成为href="/post-title"

我的_config.yml顺便说一句只有这个:

permalink: /exercises/:title

当我单击链接时,这个问题总是指向http://corroded.github.com/exercises/title-here,而实际上它应该是http://corroded.github.com/projectname/exercises/title-这里

我实际上已经尝试通过以下方式对路径进行硬编码:

<a href="http://corroded.github.com{{ post.url }}">这有效。它转到帖子但它显示为纯文本而不是生成的html。我知道我在这里遗漏了一些非常简单的东西,但我似乎找不到它,整个周末我都在为此苦苦挣扎。

哦,我忘了补充:在我的本地主机中执行此操作,我可以在以下位置访问所有内容:

http://localhost:4000/并单击链接将让我进入http://localhost:4000/exercises/title-here它的工作原理。所以我有一个很好的猜测,它与配置有关。

4

2 回答 2

29

编辑:此答案已添加到http://jekyllrb.com/docs/github-pages/的 Jekyll 文档中。


如果您正在寻找具有 GitHub Pages ( username.github.io/project-name/) 标准 URL 的解决方案,我终于找到了诀窍。这是做什么:

_config.yml中,将baseurl选项设置为/project-name-- 注意前导斜杠和没有尾随斜杠。

现在,您需要通过以下两种方式更改在模板和帖子中创建链接的方式:

引用 JS 或 CSS 文件时,请这样做:{{ site.baseurl }}/path/to/css.css-- 注意紧跟在变量后面的斜杠(就在“路径”之前)。

在做永久链接或内部链接时,请这样做:{{ site.baseurl }}{{ post.url }}-- 请注意,两个变量之间没有斜线。

最后,如果您想在使用 提交/部署之前预览您的站点jekyll serve,请务必将一个空字符串传递给该--baseurl选项,以便您可以localhost:4000正常查看所有内容(无需/project-name进入那里将所有内容搞砸):jekyll serve --baseurl ''

通过这种方式,您可以从 localhost 上的站点根目录在本地预览您的站点,但是当 GitHub 从 gh-pages 分支生成您的页面时,所有 URL 都将以正确开头/project-name并正确解析。

关于issue #332的更多讨论。

于 2013-06-05T03:07:00.543 回答
9

当您的永久链接前面有一个斜杠时,这意味着所有 URL 都应该是相对于站点根目录的。这就是它要http://corroded.github.com/exercises/title-here代替的原因http://corroded.github.com/projectname/exercises/title-here。尝试不使用第一个斜线:

permalink: exercises/:title

使用 HTML 创建的任何 URL 也是如此。如果你有:

<a href="/about">

它总是会转到域的根目录(例如http://corroded.github.com/about)。如果您的项目名为“projectname”,则可以使用 HTML 之类的

<a href="/projectname/about">

直接链接到页面(例如http://corroded.github.com/projectname/about)。

当然,您也可以使用相对 URL(即没有前导斜杠的 URL)。您只需要知道您在目录树中的位置。

于 2012-05-14T19:02:27.027 回答