Чем пользовательский контент отличается от редакционного
На редакционном сайте заголовок пишет сотрудник, и его можно проконтролировать. Когда названия вводят пользователи, приложение получает произвольный текст: слова капслоком, ссылки, эмодзи, повторяющиеся символы, реклама. Всё это без обработки попадёт в адрес.
Обязательная очистка перед генерацией
- удаление ссылок, адресов почты и служебных символов;
- обрезка повторов вроде «!!!!!!» и «ааааааа»;
- ограничение длины слага;
- приведение к нижнему регистру и транслитерация.
Порядок транслитерации описан в статье про функции транслита, а очистку удобно делать регулярными выражениями.
Стоп-слова и запрещённые значения
Составьте список слов, которые нельзя допускать в адресах: нецензурные выражения, названия служебных разделов, зарезервированные значения вроде admin или api. Значение, попавшее в список, заменяют нейтральным идентификатором.
Когда лучше использовать идентификатор вместо названия
Для коротких сообщений, комментариев и объявлений без содержательного названия проще использовать числовой идентификатор или короткий код. Адрес остаётся стабильным, а риск манипуляций отсутствует.
Компромисс: для содержательных материалов слаг из названия полезен для поиска, для коротких пользовательских записей достаточно идентификатора.
Модерация и допуск к индексации
Материалы, не прошедшие модерацию, лучше не индексировать вовсе. Открывайте страницу для робота только после проверки, иначе поисковая система может запомнить спам и связать его с вашим сайтом.
Удаление и жалобы
Пользовательский контент нужно уметь быстро удалять. Если удалённая страница остаётся доступной, а в выдаче висят неприемлемые материалы, репутация сайта страдает. При удалении отдавайте код 410 или 404, а срочные случаи ускоряйте через инструмент удаления в панели вебмастера.
- предусмотрите способ пожаловаться на материал;
- при удалении меняйте код ответа сразу, без задержки;
- для срочных случаев используйте ускоренное удаление из выдачи.
Ссылки в пользовательском содержимом
Внешние ссылки, оставленные посетителями, принято помечать специальным атрибутом, сообщающим поисковой системе, что вы не ручаетесь за их содержимое. Это защищает сайт от использования площадки для продвижения посторонних ресурсов и снижает интерес спамеров.
Качество страниц пользовательского содержимого
Слаг — лишь часть картины. Страницы с коротким бессодержательным текстом или дублями плохо индексируются и могут ухудшать оценку всего сайта. Задайте минимальные требования к материалу — длину текста, наличие описания — и не открывайте для индексации те страницы, которые их не выполняют.
Частые вопросы
Стоит ли строить слаг из названия, которое ввёл пользователь?
Только после очистки и проверки; для коротких материалов без содержательного названия надёжнее использовать идентификатор.
Что делать с нецензурными словами в названии?
Проверять по списку стоп-слов и при совпадении подставлять нейтральный идентификатор вместо слага из названия.
Нужно ли индексировать пользовательский контент до модерации?
Нет, страницу лучше открывать для индексации только после проверки, чтобы не запомнить спам.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.