Jekyll позволяет гибко создавать URL на вашем сайте. Вы можете задать вид постоянных ссылок в конфигурации или во вводной для каждого поста. Вы можете использовать встроенные стили для создания ссылок или создать свой. Стиль по умолчанию — date.

Постоянные ссылки конструируются путем создания шаблонного URL, в котором динамические элементы заменены ключевыми словами с префиксами из двоеточий. например, дефолтный стиль date определен так:

/:categories/:year/:month/:day/:title.html.

Переменные шаблонов для задания вида ссылок

Переменная Описание
year Год из названия поста.
month Месяц из названия поста.
i_month Месяц из названия поста без начального нуля.
day День из названия поста.
i_day День из названия поста без начального нуля.
short_year Год из названия поста без указания века.
hour Час из даты поста в 24-часовом формате (00..23).
minute Минута из даты поста (00..59).
second Секунда из даты поста (00..59).
title Заголовок из названия документа. Может быть переписан в кратком названии (slug) из вводной YAML.
slug Заголовок из названия документа, в котором все символы кроме цифр и букв заменены дефисами. Может быть переписан значением переменной slug во вводной.
categories Категории, заданные для поста. Если пост относится к нескольким категориям, Jekyll создает иерархию (например, /category1/category2).Также Jekyll автоматически парсит двойные слэши в URL, при отсутствии категорий эта переменная будет игнорироваться.

Встроенные стили для постоянных ссылок

Вы может создать собственный стиль постоянных ссылок с помощью переменных шаблона, для удобства в Jekyll также есть встроенные стили.

Стиль ссылок Шаблон URL
date /:categories/:year/:month/:day/:title.html
pretty /:categories/:year/:month/:day/:title/
ordinal /:categories/:year/:y_day/:title.html
none /:categories/:title.html

Страницы и коллекции

Настройка постоянных ссылок определяет стили постоянных ссылок постов. У страниц и коллекций свой стиль постоянных ссылок, для страниц дефолтный — /:path/:basename, а для коллекций /:collection/:path.

Эти стили изменяются в соответствии со стилем суффиксов, определенным в настройке постоянных ссылок поста . Например, стиль постоянных ссылок pretty, содержащий обратный слэш, обновит постоянные ссылки страницы также добавив им обратный слэш: /:path/:basename/. Стиль date, содержащий расширение файла, добавит ко всем ссылкам расширение: /:path/:basename:output_ext. Это же справедливо и для пользовательских стилей постоянных ссылок.

Постоянную ссылку для отдельной страницы или документа коллекции всегда можно переписать во вводной. А постоянные ссылки коллекций можно также кастомизировать в настройке коллекции.

Образцы стилей постоянных ссылок

Для образца возьмем пост с названием /2009-04-29-slap-chop.md:

Шаблон URL Итоговый URL постоянной ссылки
Не определен (дефолтный date) /2009/04/29/slap-chop.html
pretty /2009/04/29/slap-chop/index.html
/:month-:day-:year/:title.html /04-29-2009/slap-chop.html
/blog/:year/:month/:day/:title/ /blog/2009/04/29/slap-chop/
/:year/:month/:title Детали /2009/04/slap-chop

Постоянные ссылки без расширений

Jekyll поддерживает постоянные ссылки, не содержащие обратный слэш или расширение файла, но это требует дополнительной настройки сервера. При использовании постоянных ссылок без расширений, выходные файлы будут по прежнему иметь расширение (обычно .html) и веб-сервер сможет маршрутизировать запросы без расширений к этим файлам.

GitHub Pages и встроенный сервер Jekyll (WEBrick) поддерживают постоянные ссылки без расширений, не требуя какой-либо дополнительной настройки.

Apache

В сервере Apache имеется развитая поддержка разнообразного контента, ссылки без расширений настраиваются опцией multiviews в httpd.conf или .htaccess:

Options +MultiViews

Nginx

Директива try_files позволяет вам определить список файлов для поиска при обработке запроса. Следующая конфигурация позволяет Nginx искать файл с расширением .html, если в запрашиваемом URI расширение отсутствует.

try_files $uri $uri.html $uri/ =404;