Hugo: slug и url
- В front matter поле
slugпереопределяет последний сегмент адреса, аurl— весь путь. Если указаны оба, побеждаетurl. - Hugo не очищает значение
url: пишите его латиницей сами. - Настройка
removePathAccentsубирает только комбинирующие знаки (например, «é» → «e»). Из её описания следует, что она не переводит кириллицу в латиницу, поэтому для русских заголовков задавайтеslugвручную.
Jekyll: режимы slugify
Фильтр slugify в Jekyll работает в нескольких режимах:
raw— заменяются только пробелы;default— заменяются пробелы и небуквенно-цифровые символы;pretty— как default, но оставляются некоторые знаки пунктуации, безопасные для адреса;ascii— дополнительно удаляются все не-ASCII символы;latin— латинские буквы с диакритикой сначала переводятся в обычные (например, «à» → «a»).
Из описания режимов видно, что режим ascii удалит русские буквы, и адрес может оказаться пустым. Режим latin работает только с латинскими буквами с диакритикой, кириллицу он не транслитерирует.
Что делать в обоих генераторах
- Задавать адрес явно: в Hugo —
slugилиurl, в Jekyll — через имя файла латиницей или полеpermalinkв front matter. - Брать значение из генератора, а не вычислять на лету.
- Для массового создания постов — заранее подготовить список адресов.
Как проверить
Чтобы узнать, как ваш проект превращает заголовок в адрес, создайте тестовую страницу с названием «Щёлково цех юг» и сравните результат. Таблица Яндекса даёт shhelkovo-ceh-yug; привычный английский вариант — shchyolkovo-tsekh-yug. Как читать другие результаты — в статье «Транслит Яндекса против встроенного в CMS».
Источники
Использованы документация Jekyll по фильтрам и обсуждения на форуме Hugo. Проверьте поведение на вашей версии.
Типичные ошибки
- Использовать
slugify: asciiдля русских заголовков. - Рассчитывать, что
removePathAccentsпереведёт кириллицу в латиницу. - Указывать в
urlрусские буквы. - Менять адрес опубликованного поста без редиректа.
Пошагово: приводим адреса к единому виду
- Составьте список заголовков статей.
- Получите адреса в генераторе в режиме «Список строк».
- Запишите их в
slug(Hugo) или в имя файла иpermalink(Jekyll). - Соберите сайт и проверьте адреса в готовой папке сборки.
- Для опубликованных страниц настройте редиректы.
Разбор заголовка по шагам
Возьмём заголовок «Как выбрать беговые кроссовки» и пройдём путь до адреса. Hugo и Jekyll сами латиницу не создадут: нужен явный slug.
Заголовок: Как выбрать беговые кроссовки
Без служебных слов: Как выбрать беговые кроссовки
Адрес целиком: kak-vybrat-begovye-krossovki
Адрес короче: kak-vybrat-begovye-krossovki
Режим «Убрать служебные слова» в генераторе делает второй шаг сам. Короткий адрес читается легче и лучше помещается в строку браузера. Ограничения по длине и другие правила составления адреса собраны в статье «Как составить ЧПУ-адрес страницы».
Памятка для редактора
Если в проекте несколько редакторов, дайте им короткую памятку. Достаточно этих правил:
- Slug или url задаём явно.
- В Jekyll режим ascii для русских заголовков не использовать.
- Менять опубликованный адрес — с редиректом.
Чек-лист
- Определить, откуда берётся адрес: из имени файла или front matter.
- Задавать адрес явно.
- Не использовать режим ascii для русских заголовков.
- Менять адрес — с редиректом.
Частые вопросы
Какие поля Hugo задают адрес вручную?
slug переопределяет последний сегмент, url — весь путь.
Переводит ли removePathAccents кириллицу?
Нет: по описанию настройка убирает только комбинирующие знаки.
Что делает режим ascii в Jekyll?
Удаляет все не-ASCII символы: русские буквы пропадут.
Как получить адрес для русского заголовка?
Подставить результат генератора в slug, url или permalink.
Проверьте свои заголовки: вставьте их в генератор ЧПУ и посмотрите, как в адресе выглядят слова с этой буквой.