杰基尔的相对链接

时间:2014-12-12 07:38:03

标签: jekyll liquid

我在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}}">&#60;&#60; Go to older entry</a></p>
{% else %}
<p class="previousEntry blueButton">&#60;&#60;  Go to older entry</p>
{% endif %}

当我运行jekyll serve时,http://localhost:4000的一切看起来都没问题, 但是,当我查看jekyll build之后生成的代码时,它看起来像这样:

<p class="previousEntry blueButton"> <a href="/2013/04/12/FirstVisit.html">&#60;&#60;   Go to older entry</a></p>
<p class="nextEntry blueButton"><a href="/2014/07/09/OfficialMeeting.html">Go to newer entry &#62;&#62;</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} }(这是页面的当前位置)

当我尝试将其上传到网络服务器时,这会导致问题吗?如果是这样,我如何制作它,以便这个相对链接将用户引导到我想要的地方,一旦我将其上传到网络服务器?

2 个答案:

答案 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. 类似的内容。