Каким должен быть хороший slug
Slug — это читаемая часть URL, которая обозначает страницу: в example.com/blog/how-to-store-coffee-beans slug — это how-to-store-coffee-beans. Системы управления контентом вроде WordPress, Ghost, Shopify и большинство генераторов статических сайтов строят его из заголовка страницы, и хорошему slug стоит уделить минуту внимания, потому что обычно он остаётся со страницей на всю её жизнь.
К чему стремиться:
- Читаемость. Человек, увидевший ссылку в чате или в поисковой выдаче, должен понимать, о чём страница.
- Краткость. Трёх-шести значимых слов вполне достаточно.
how-to-store-coffee-beansработает лучше, чемhow-to-store-your-coffee-beans-so-they-stay-fresh-for-longer-2024-guide. - Простой ASCII. Буквы
a–z, цифры и дефисы переживают любую систему, почтовый клиент и копирование, не превращаясь в%D0%BA%D0%BE…. - Стабильность. Смена slug после публикации ломает ссылки и закладки, если не добавить редирект, поэтому избегайте дат и чисел, которые устареют, вроде
best-laptops-2024, — если только страница действительно не про этот год.
Что генератор делает с текстом
Преобразование идёт в фиксированном порядке, и он объясняет любой результат, который вы видите:
- Если включён Нижний регистр, весь текст переводится в строчные буквы.
- Кириллица транслитерируется в латиницу:
ж→zh,ц→ts,щ→shch,я→ya. Украинскиеє,і,їиґтоже поддерживаются, а мягкий и твёрдый знаки отбрасываются. - Несколько букв без простой формы без диакритики заменяются:
ß→ss,æ→ae,œ→oe,ø→o,ł→l,đ→d,þ→th. Амперсанд превращается в словоand. - Ударения и другие диакритические знаки удаляются: каждая буква раскладывается на составляющие, и знаки отбрасываются, так что
é→e,ñ→n,ş→s, а вьетнамскаяệ→e. - Каждая последовательность символов, которые не являются буквой или цифрой, — пробелы, пунктуация, кавычки и эмодзи — схлопывается в один разделитель.
- Разделители в начале и в конце обрезаются.
Поэтому Crème Brûlée & Coffee: A 5-Minute Guide! превращается в creme-brulee-and-coffee-a-5-minute-guide, а Харків — Львів — в kharkiv-lviv.
Буквы письменностей, которые не транслитерируются, например греческие, арабские или китайские символы, остаются как есть. В современных URL они допустимы, но во многих местах будут показаны в процентной кодировке, поэтому для таких языков лучше написать slug вручную латиницей.
Дефисы или подчёркивания
Для веб-страниц используйте дефисы. Поисковые системы читают дефис как границу слова, поэтому coffee-beans понимается как два слова. Подчёркивание исторически считалось соединяющим символом, поэтому coffee_beans может прочитаться как один токен. Кроме того, дефис лучше виден в подчёркнутой ссылке, где подчёркивание сливается с линией.
За пределами веба подчёркивания удобнее: имена файлов (quarterly_report_q3.pdf), столбцы баз данных, имена переменных окружения и идентификаторы в языках, где дефисы запрещены. Чтобы переводить текст между соглашениями об именовании вроде camelCase, snake_case или CONSTANT_CASE, воспользуйтесь инструментом «Изменить регистр текста».
Отключайте Нижний регистр только если целевая система чувствительна к регистру и вы хотите сохранить заглавные буквы — например, в вики со ссылками в стиле Page_Title. На большинстве веб-серверов URL чувствительны к регистру, так что смешение регистров ведёт к дублям страниц и битым ссылкам.
Ручная правка результата
Генератор работает механически, и slug обычно читается лучше после быстрой правки:
- Уберите слова-заполнители. Слова вроде
a,the,and,of,toдобавляют длину, но не смысл.the-ultimate-guide-to-the-best-coffeeвполне нормально читается какcoffee-guide. - Следите за апострофами. Апостроф — это пунктуация, поэтому
don't panicпревращается вdon-t-panic. Если сначала убрать апостроф в заголовке, получитсяdont-panic. - Проверяйте транслитерацию имён. Кириллица транслитерируется по одной фиксированной схеме. У человека или бренда может быть устоявшееся латинское написание, например как в паспорте, которое отличается от автоматического.
- Следите за уникальностью. Две записи с заголовком «Обновление» дадут одинаковый slug. Большинство CMS автоматически добавляют
-2; если ваша этого не делает, добавьте отличающее слово.
Всё происходит в браузере прямо по мере ввода. Если slug нужен как часть параметра запроса, а не пути, закодируйте всё значение инструментом «URL кодировщик и декодировщик».