Подтвердить что ты не робот

Корень сайта: Github Pages vs. `jekyll --server`

Когда я запускаю jekyll --server, мой сайт доступен в http://localhost:4000/, но когда я развертываю его на страницах проекта GitHub, он доступен в http://username.github.com/projectname/.

Это означает, что я не могу использовать абсолютные URL-адреса при обращении к таблицам стилей и другим ресурсам. Относительные URL-адреса ломаются, когда один и тот же макет используется, например. index.html и 2012/01/01/happy-new-year.html. Что такое принятый/a-хороший способ добавления таблиц стилей и других ресурсов в репозиторий проектов Project GitHub?

Перекрестная ссылка на Проблемы GitHub.

4b9b3361

Ответ 1

Эта проблема возникает из-за того, что корневой каталог всегда является URL-адресом пользователя (user.github.com) на страницах пользователя и проекта. Я нашел решение для этого: Настроить переменную url в файле _config.yml на страницу проекта github:

safe: true
...
url: "http://user.github.io/project-name"

тогда в макетах используйте абсолютные ссылки, используя переменную site.url, чтобы сделать это:

<link rel="stylesheet" href="{{ site.url }}/css/styles.css">

и запустите сервер, используя:

$jekyll --server --url=http://localhost:4000

Опция командной строки перезаписывает параметр в файле конфигурации в локальном режиме. С этими настройками я получаю все ссылки, указывающие на нужное место, оба размещенные в github и в локальном режиме.


UPDATE: Jekyll 1.0. Поскольку Jekyll достиг 1,0, оппоненты server и url и соответствующие параметры командной строки --server и --url устарели. Инструкции для новой версии:

В файле _config.yml добавьте переменную baseurl (без конечной косой черты):

baseurl: "http://user.github.io/project-name"

В макетах или страницах используйте абсолютные ссылки, используя переменную site.baseurl:

<link rel="stylesheet" href="{{ site.baseurl }}/css/styles.css">

а затем запустите локальный сервер (опция baseurl пуста специально):

$ jekyll serve --watch --baseurl=

Подробнее об изменениях docs.

Ответ 2

Так как --url в командной строке устарела, есть еще одно решение.

Скажем, ваш URL-адрес repo в вас http://name.github.io/repo. Теперь во всех ссылках используются абсолютные URL-адреса, например

<link rel="stylesheet" href="/repo/css/syntax.css">

Или ссылки

<a href="/repo/license/">License</a>

Теперь вам нужно добавить --baseurl в командную строку при локальном запуске.

jekyll --server --baseurl /repo/

Ответ 3

В последней версии jekyll (1.1.2) мне было лучше создать отдельный файл конфигурации из оригинала. Единственная разница? URL-адрес (или переменная baseurl).

По умолчанию _config.yml имеет:

url: myurl.com

Новая конфигурация (позволяет называть ее _preview_config.yml):

url: localhost:4000

Это приведет к переназначению всех ваших абсолютных ссылок в зависимости от того, какую конфигурацию вы используете. Теперь для запуска сервера с конфигурацией предварительного просмотра используйте:

jekyll serve -w --config _preview_config.yml

Полное объяснение на моем blog.

Ответ 4

Чтобы ответить на короткий вопрос: добавьте baseurl: '/project-name' в _config.yml

Для ссылок CSS/JS: {{ site.baseurl }}/css/styles.css

Для всех других ссылок: {{ site.baseurl }}{{ post.url }}

Официальный ответ Jeykll GH-Pages здесь: http://jekyllrb.com/docs/github-pages/

Выдержки:

Структура URL страницы проекта

Иногда приятно просмотреть ваш сайт Jekyll, прежде чем нажимать ветвь gh-pages на GitHub. Тем не менее, подобная каталогам структура URL, используемая GitHub для страниц проекта, усложняет правильное разрешение URL-адресов. Ниже приведен подход к использованию структуры URL-адреса страницы проекта GitHub (username.github.io/project-name/), сохраняя при этом возможность предварительного просмотра вашего сайта Jekyll локально.

  • В _config.ym l установите для параметра baseurl значение /project-name - отметьте начальную косую черту и отсутствие завершающей косой черты. ex: baseurl: '/my-proj'

  • При обращении к файлам JS или CSS сделайте это так: {{ site.baseurl}}/path/to/css.css - обратите внимание на косую черту сразу после переменной (непосредственно перед "path" ).

  • При выполнении постоянных ссылок или внутренних ссылок сделайте это так: {{ site.baseurl }}{{ post.url }} - обратите внимание, что между двумя переменными нет косой черты.

  • Наконец, если вы хотите просмотреть свой сайт перед началом/развертыванием с помощью jekyll serve, обязательно передайте пустую строку в параметр --baseurl, чтобы вы могли просматривать все в localhost:4000 обычно (без /project-name в начале): ex: jekyll serve --baseurl ''

Таким образом, вы можете предварительно просмотреть свой сайт локально с сайта root на localhost, но когда GitHub генерирует ваши страницы из ветки gh-страниц, все URL-адреса начнутся с /project-name и будут исправлены правильно.

Ответ 5

Я использую jekyll-bootstrap и разворачиваю локально на порт 4000, но мой URL-адрес github - user.github.com... Я думаю, что это зависит от того, как вы первоначально создавали репо. Первоначально я использовал автоматический построитель страниц, который предлагает github, который создал репо в таком же мастере.

Я просто выполнил следующие шаги:

http://jekyllbootstrap.com/

Надеюсь, что поможет