Jekyll 中 localhost 和 github 页面的 Baseurl 行为不同

Baseurl behavior differs between localhost and github pages in Jekyll

我正在使用 Jekyll 开发静态站点,并将部署到 github pages。我在配置文件中使用 baseurl 时遇到问题。这是我的 _config.yml:

的摘录
baseurl: "/blog"
url: "http://remidoolaeghe.github.io"

当 运行 在本地 http://localhost:4000/blog/ 时,一切正常。找到html个页面,加载资源(图片,css,js)并应用到页面上。

Github Pages 上部署后,我希望该站点可用:http://remidoolaeghe.github.io/blog 但实际的 URL 是 http://remidoolaeghe.github.io.

Github Pages 上的 Jekyll 似乎没有使用 baseurl。 HTML 页面不在预期的 URLs,任何资源也不在(css、图像等)。浏览器不会加载任何基于 baseurl 的内容,如您在此处所见:

我检查过用过的Jekyll version。我使用与 Github Pages(2.4.0).

相同的方法

我是不是漏掉了什么?

可以找到我的 Github 存储库 here

jekyll 使用 baseurl 来构建相对于您网站根目录的 url。例如:<link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}">.

github 页面不使用它来生成您的站点路径。

为了在 http://remidoolaeghe.github.io/blog 访问您的博客,您需要将其移动到 blog 存储库中。

另一种重定向到 /blog 的方法是:

1. GitHub 页面重定向自

GitHub 页面允许 redirect-from Jekyll 插件,如前所述 here. You could use their plugin 并从那里重定向。虽然它是为防止旧的 links 进入 404 而构建的,但根据您的用例,这可能不是您想要的。

2。在您的根目录中手动设置元刷新标签 index.html.

<META http-equiv="refresh" content="0;URL=/blog/">

您需要 <head> </head> 中的那个标签。这将告诉对根 url 的任何请求指向存储在 /blog/index.html。这是一种快速的方法,类似于 .htaccess rewrites are done, except GitHub Pages doesn't support .htaccess for security reasons. At that point also check if you're getting 404s for some resources and update their paths accordingly, maybe with the help of site.baseurl, as another answer explains. baseurl is not what you think it does. See this post by Parker about the baseurl variable.

简而言之, 我认为您最好的选择是使用第二个,而不是创建一个 gh-pages blog 存储库并将您的站点移到那里。事实上,如果您确实移动到一个单独的博客存储库,这可能会使事情变得复杂,您仍然需要重定向 http://remidoolaeghe.github.io 以指向 http://remidoolaeghe.github.io/blog 或其他人访问 http://remidoolaeghe.github.io 而不是 /blog link 只得到一个空白页。

我遇到了同样的问题,我的 kitty image 在本地主机中显示得很可爱,但在 github 页面中丢失并出现 404 错误并且路径名错误地丢失 baseurl。我在 kitty-image-problem-solved.

中解决了它

简而言之,为了让您的 /img/avatar.png 出现在您的 _posts/ posts 中,您应该这样做

   ![Paris]( {{"/img/avatar.png" | relative_url }})

relative_url 的文档位于 jykyll-liquid-filters