2014-12-12 4 views
0

У меня возникла проблема со ссылками в Jekyll.Относительные ссылки в Jekyll

К примеру, у меня есть сообщение в папке:

file:///C:/Users/My%20Name/Documents/jekyll_site/2014-10-25-Workshop.html 

Когда я использую jekyll build пост вставляется в эту папку: файл: /// C:/Users/My% 20Name/Документы /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 (что приводит к тому, что страница «не может быть найдена») вместо file:///C:/Users/My%20Name/Documents/jekyll_site/_site/2013/04/12/FirstVisit.html (которая является текущим расположением страницы)

Будет ли это проблемой при попытке загрузить ее на веб-сервер? Если да, то как мне это сделать, чтобы эта относительная ссылка направляла пользователя в то место, которое я хочу, когда я загружу его на веб-сервер?

+0

У вас есть ответ с аналогичного вопроса: http://stackoverflow.com/a/14254928/2491604 – karelv

ответ

2

Относительная ссылка, например /folder/file.html, относится к ведущему, например http://host.tld.

host + relative path = http://host.tld/folder/file.html.

Как Jekyll serve устанавливает корневую папку хоста на file:///C:/somePath/_site/ этого окончательно решить до

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, вставив этот URL в свой браузер, а не нажав на страницу в файле explorer.

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 по аналогичному вопросу.

Смежные вопросы