Slugify — генератор слагов

Превратите любой заголовок в аккуратный URL-слаг. Удаляет диакритику, позволяет выбрать разделитель, регистр и длину, при желании убирает стоп-слова и сохраняет Unicode.

Превратите заголовок в аккуратный и безопасный для URL слаг. Диакритические знаки сводятся к обычному ASCII, пунктуация удаляется, а слова соединяются выбранным вами разделителем. С помощью параметров можно задать регистр, ограничить максимальную длину или убрать распространённые стоп-слова.

Каким должен быть хороший URL-слаг

Зачем нужны слаги

Слаг — это понятная человеку часть URL, которая идентифицирует страницу: how-to-cache-resumes-in-redis в адресе /blog/how-to-cache-resumes-in-redis. Он заменяет непрозрачный числовой идентификатор на то, что человек может прочитать, запомнить и оценить до перехода. Поисковые системы показывают URL в результатах, поэтому описательный слаг и вызывает доверие у читателей, и подчёркивает тему страницы.

Правила, которым должен следовать слаг

Используйте только строчные латинские буквы, цифры и один разделитель. Это позволяет избежать трёх разных проблем. На большинстве серверов путь в URL чувствителен к регистру, поэтому /About и /about — разные ресурсы, а слаг со смешанным регистром провоцирует ошибки дублирования контента. Процентное кодирование делает любой символ вне ASCII в три раза длиннее и гораздо менее читаемым при копировании в обычный текст. А пробелы просто недопустимы и превращаются в %20 или +.

Дефис — общепринятый разделитель. Google годами заявляет, что трактует дефисы как разделители слов, а подчёркивания — как соединители, то есть cache_redis может быть прочитан как один токен, тогда как cache-redis — это явно два слова. Если у вас нет особой причины, выбирайте дефис.

Транслитерация против сохранения Unicode

По умолчанию этот инструмент сводит символы с диакритикой к ближайшему эквиваленту в ASCII: é становится e, ßss, łl. Для этого текст декомпозируется с помощью нормализации Unicode NFD с удалением комбинирующих знаков, а также используется таблица соответствий для лигатур и особых букв, которые декомпозиция не обрабатывает.

Сохранение Unicode — вполне законная альтернатива. Интернационализированные URL работают во всех современных браузерах и гораздо понятнее носителю языка: китайский или русский слаг, транслитерированный в ASCII, обычно бессмыслен. Плата за это — процентно закодированные байты в исходном URL, которые выглядят пугающе при вставке в письмо или терминал, а некоторые устаревшие инструменты всё ещё их искажают. Включайте Сохранять буквы Unicode, если ваша аудитория читает эту письменность, и отключайте, если слаг должен корректно работать в произвольных системах.

Длина и стоп-слова

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

Удаление стоп-слов — the, a, of, and — сокращает слаг, почти не теряя смысла. Это скорее стилистический выбор, чем фактор ранжирования: современные поисковые системы вполне способны их игнорировать. Будьте осторожны с заголовками, где стоп-слово несёт смысл: удаление их из «The Who» или «To Be or Not to Be» разрушает фразу.

Стабильность важнее совершенства

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

Примечание об открытом исходном коде: транслитерация выполнена напрямую с использованием нормализации Unicode NFD и небольшой таблицы лигатур. Сторонние библиотеки не используются.

Частые вопросы

Дефисы или подчёркивания?
Дефисы. Поисковые системы считают дефис разделителем слов, а подчёркивание — соединителем, поэтому слаги с дефисами разбираются на отдельные слова. Кроме того, подчёркивания визуально исчезают под подчёркиванием, которое ссылки имеют по умолчанию.
Должны ли слаги быть строчными?
Да. Путь в URL на большинстве серверов чувствителен к регистру, поэтому /About и /about могут вести на две разные страницы и разделять ваши сигналы ранжирования. Принудительный нижний регистр полностью снимает эту проблему.
Можно ли использовать нелатинские символы?
Да, современные браузеры работают с ними корректно, и для носителей языка они гораздо понятнее. Компромисс в том, что исходный URL становится процентно закодированным и выглядит шумно вне браузера. Включите «Сохранять буквы Unicode», если такой компромисс подходит вашей аудитории.
Какой длины должен быть слаг?
Достаточно длинным, чтобы быть описательным, и достаточно коротким, чтобы читаться с первого взгляда. Примерно от трёх до шести слов или менее 60 символов — тогда он полностью виден в большинстве результатов поиска.
Нужно ли удалять стоп-слова?
Обычно это безвредно и делает слаг опрятнее, но это косметический выбор без пользы для ранжирования. Не делайте этого, когда стоп-слово несёт смысл, например в названии группы или в цитате.
Можно ли безопасно изменить слаг позже?
Только с переадресацией 301 со старого URL. Без неё вы потеряете все существующие ссылки и закладки, а вместе с ними накопленные сигналы ранжирования. Определитесь с форматом заранее и придерживайтесь его.