Красивые адреса страниц на Jekyll
Адреса материалов можно настраивать тремя способами:
- Меняя путь к исходному файлу материала. Например, файл
/blog/hello.md
будет сконвертирован в/_site/blog/hello.html
- Меняя пермалинк во фронтматтере у файла страницы. Где бы исходник материала не находился, можно задать
` — permalink: /blog/hello.html — ` и он будет конвертирован в файл доступный по указанному адресу. - В настройках генератора _config.yml
самый общий способ. Удобно выбрать страницы по определённому признаку и прописать для них настройки адресов по умолчанию. Получаем такие плюсы:- Исходные файлы упорядочены по папкам, как нам удобно
- Адреса при этом красивые
- Можем при необходимости поменять их быстро и везде. И минус: настраивать сложнее, можно по неосторожности переместить все материалы сайта, поломав внутренние и внешние ссылки, что плохо для СЕО и вообще.
Если с первыми двумя способами всё понятно, то третий заработал у меня не сразу. Я хотел, чтобы страницы были доступны по адресам вида /about.html
, а страницы блога /blog/hello.html
. Первым делом попробовал задать пермалинки так же, как и другие дефолтные метаданные:
`
defaults:
- scope: type: posts values: permalink: /blog/:title ` Но джекилл воспринял :title не как переменную, а как текст, в результати все страницы получили один и тож же адрес “/blog/:title”. Я так и не понял, баг это или фича. Заработал другой подход: ` permalink: /:categories/:title ` Тут мы задаём пермалинк для всех материалов сайта. Если у страницы есть категория, то она будет лежать в папке с названием этой категории. Отлично! Остаётся добавить категорию blog для всех постов по умолчанию
permalink: /:categories/:title
defaults:
-
scope:
type: posts
values:
categories: blog