Jekyll中localhost和github页面的Baseurl行为不同
我正在使用Jekyll中localhost和github页面的Baseurl行为不同,jekyll,github-pages,base-url,Jekyll,Github Pages,Base Url,我正在使用Jekyll开发一个静态站点,部署在github页面上。我在使用配置文件中的baseurl时遇到问题。这是我的\u config.yml的摘录: baseurl: "/blog" url: "http://remidoolaeghe.github.io" 在本地运行时,一切正常。html页面被找到,资源(图像、css、js)被加载并应用到页面上 一旦部署到Github页面,我希望该站点可以在以下位置使用: 但实际的URL是 似乎Github页面上的Jekyll没有使用baseurl。
Jekyll
开发一个静态站点,部署在github页面上。我在使用配置文件中的baseurl时遇到问题。这是我的\u config.yml
的摘录:
baseurl: "/blog"
url: "http://remidoolaeghe.github.io"
在本地运行时,一切正常。html页面被找到,资源(图像、css、js)被加载并应用到页面上
一旦部署到Github页面
,我希望该站点可以在以下位置使用:
但实际的URL是
似乎Github页面上的Jekyll
没有使用baseurl。HTML页面不在预期URL处,任何资源(css、图像等)也不在预期URL处。浏览器不会加载任何基于baseurl的内容,如下所示:
我已经检查了使用的Jekyll版本
。我使用的页面与Github页面相同(2.4.0)
我错过什么了吗
可以找到MyGithub
repo。jekyll使用baseurl
构建相对于网站根目录的url。例如:
github页面不使用它来生成站点路径
若要访问您的博客,您需要将其移动到博客存储库中。重定向到/blog
的另一种选择是:
1。GitHub页面重定向自
GitHub页面允许从
Jekyll插件重定向,如前所述。你可以使用他们的链接并从那里重定向。尽管它是为防止旧链接转到404而构建的,但考虑到您的用例,这可能不是您想要的
2。在根目录中手动设置元刷新标记index.html
<META http-equiv="refresh" content="0;URL=/blog/">
您需要在
中使用该标记。这将告诉用户对根url的任何请求都指向存储在/blog/
中的index.html
。这是一种快速的方法,与.htaccess
类似,只是出于安全原因,GitHub页面不支持.htaccess。在这一点上,还可以检查您是否获得了一些资源的404
s,并相应地更新它们的路径,如另一个答案所解释的,可以借助site.baseurl
baseurl
不是您认为的那样。看
简而言之,
我认为您最好的选择是使用第二个,而不是创建一个gh页面博客
存储库并将您的站点移动到那里。事实上,如果你真的转到一个单独的博客回购,这可能会让事情变得复杂,您仍然需要重定向http://remidoolaeghe.github.io
指向http://remidoolaeghe.github.io/blog
或访问http://remidoolaeghe.github.io
而不是/blog
链接只能获得一个空白页。这很奇怪,因为我在本地部署的站点运行良好。它不在/blog文件夹中,只在默认的站点文件夹中。区别在哪里?我明白你的意思。你帮我想知道我到底想要什么。实际上,我希望在我的网站上有一个“博客”部分,还有一个“非博客”部分。我想我必须转移到一个博客github repo,这样我仍然可以从博客部分链接一个非博客部分(带有超链接),反之亦然。你认为我可以有一个repo生成网站的一部分可以访问,另一个指向并使访问者产生错觉,从访问者的角度来看,这是一个单一的网站吗?当然,你可以有一个正常的GitHub页面repo,可以在正常的GitHub.io域访问,然后有超链接指向你的第二个repo,这是一个名为blog
的gh页面repo:但是除了必须推两次之外,也许最好在一个repo中包含所有内容,并将帖子发送到blog,除非你觉得管理两个repo更好,当然访问者会将其视为一个网站,如果你有相同的风格和设计,我想你不想要一个相同的,因为你想要2回购?(因为如果你真的想要相同的设计,管理一次回购可能会更好?)当然,我想避免管理两次回购。在一个完美的世界中,我希望我的帖子(和索引页)进入/blog目录,这样“/blog”就会出现在URL中。也许我应该使用配置文件中的选项,在/blog/suffix上提供我的帖子和索引?@Rémidoolage我会选择permalink选项。(事实上我就是这么做的)