我在Jekyll的链接方面遇到了一些问题。
例如,我在文件夹中有一个帖子:
file:///C:/Users/My%20Name/Documents/jekyll_site/2014-10-25-Workshop.html
当我使用jekyll build
时,帖子会插入此文件夹:
文件:/// C:/Users/My%20Name/Documents/jekyll_site/_site/2014/10/25/Workshop.html
在帖子模板中,我使用这个简单的代码转到下一页或上一页:
{% if page.previous.url %}
<p class="previousEntry blueButton"> <a href="{{page.previous.url}}"><< Go to older entry</a></p>
{% else %}
<p class="previousEntry blueButton"><< Go to older entry</p>
{% endif %}
当我运行jekyll serve
时,http://localhost:4000
的一切看起来都没问题,
但是,当我查看jekyll build
之后生成的代码时,它看起来像这样:
<p class="previousEntry blueButton"> <a href="/2013/04/12/FirstVisit.html"><< Go to older entry</a></p>
<p class="nextEntry blueButton"><a href="/2014/07/09/OfficialMeeting.html">Go to newer entry >></a></p>
<p class="backToNews blueButton"><a href="news.html">Go back to main news page</a></p>
并且,例如,当我点击“转到较旧的条目”时,我会被定向到file:///C:/2013/04/12/FirstVisit.html
(导致“无法找到此页面”页面),而不是{{1} }(这是页面的当前位置)
当我尝试将其上传到网络服务器时,这会导致问题吗?如果是这样,我如何制作它,以便这个相对链接将用户引导到我想要的地方,一旦我将其上传到网络服务器?
答案 0 :(得分:2)
/folder/file.html
之类的相对链接与主机相关,如http://host.tld
。
host + relative path = http://host.tld/folder/file.html
。
由于Jekyll serve
将主机的根文件夹设置为file:///C:/somePath/_site/
,这最终解析为</ p>
root folder + relative path = file:///C:/somePath/_site/folder/file.html
这是正确的道路。
这里你谈的是文件协议(文件://),这里的“主机”是file:///C:
,相对路径/2013/04/12/FirstVisit.html
被解析为
host + relative path = file:///C:/2013/04/12/FirstVisit.html
导致找不到网页。
这里真正的问题是你在谈论从文件浏览器打开的页面。您已经点击了使用文件协议打开的html页面,而不是http协议。
通过在浏览器中粘贴此网址,确保使用http://localhost:4000
打开网站,而不是点击文件资源管理器中的网页。
答案 1 :(得分:1)
我做了以下工作让它在本地工作:
- 双击索引并在浏览器中查看地址栏。对于我目前的项目,它是:file:///C:/Users/user/Desktop/blog/blog/_site/index.html
- 打开_config.yml
文件,并将其从baseurl:""
更改为index.html
结束部分之前的地址栏中的baseurl:"file:///C:/Users/user/Desktop/blog/blog/_site/"
更改为baseurl
- 在终端再次建立网站
这适用于本地。当我将网站上传到我的网络主机上的文件夹时,我会再次更改Invalid value for 'app.urls[0]'.Missing scheme separator.
类似的内容。