Создать URL
Генератор Правила транслитерации Как сделать ЧПУ Блог Вопросы и ответы Создать URL
Практика

Регулярные выражения для SEO-задач

Регулярные выражения — универсальный инструмент SEO-специалиста. Разберём самые полезные приёмы и опасности.

Где применяются регулярные выражения

Регулярное выражение — шаблон для поиска текста. В SEO он нужен постоянно: отфильтровать адреса в отчёте вебмастера, найти в выгрузке краулера страницы с параметрами, выбрать группу страниц в аналитике, записать правило перенаправления на сервере. Один шаблон охватывает тысячи адресов сразу.

РегулярныевыраженияОтчётыи фильтрыВыгрузкии таблицыПравиласервера
РегулярныевыраженияОтчётыи фильтрыВыгрузкии таблицыПравиласервера
Основные области применения

Основные конструкции

Минимум для работы
ЗаписьЧто означаетПример
^ и $Начало и конец строки^/blog/ — адреса, начинающиеся с /blog/
.Любой символa.c — abc, a1c
[abc]Один из перечисленных символов[0-9] — любая цифра
+, *, ?Один и более, любое число, ноль или один[0-9]+ — число
(a|b)Один из вариантов(kupit|snyat)
[^&]+Любые символы, кроме амперсандаЗначение параметра

Готовые шаблоны для SEO

Полезные выражения
ЗадачаВыражениеЧто находит
Адреса с параметрами[?]Любой адрес со знаком вопроса
Метки кампаний[?&]utm_[a-z]+=Параметры utm_source, utm_medium и другие
Заглавные буквы в пути^[^?]*[A-Z]Адреса с заглавными буквами до параметров
Длинные числовые идентификаторы[0-9]{6,}Числа из шести и более цифр
Адреса без слеша в конце[^/?]$Строки, не заканчивающиеся слешем
Страницы пагинации(page=|/page/)[0-9]+Номера страниц в двух форматах
Двойные слеши в пути[^:]//Повторяющиеся слеши в адресе

Пример в Python

import re

pattern = re.compile(r"[?&]utm_[a-z]+=")
with open("urls.txt", encoding="utf-8") as f:
    for line in f:
        url = line.strip()
        if pattern.search(url):
            print(url)

Такой скрипт найдёт в списке адресов все, где есть метки кампаний. Тот же шаблон подойдёт для фильтра в отчёте вебмастера или аналитики, если инструмент поддерживает регулярные выражения: синтаксис у разных систем немного отличается, уточняйте в справке.

Правила сервера

rewrite ^/old-blog/(.*)$ /blog/$1 permanent;

Выражение принимает любой адрес, начинающийся с /old-blog/, и переносит остаток пути в новый адрес. Такие правила легко сделать слишком широкими, поэтому проверяйте их до выкладки: как безопасно тестировать правила сервера, массовая генерация правил.

Как не ошибиться

  1. Проверяйте шаблон на реальных примерах: и на тех, что должны совпасть, и на тех, что не должны.
  2. Привязывайте начало и конец, если нужно точное совпадение: без ^ и $ шаблон найдёт совпадения где угодно.
  3. Остерегайтесь жадных выражений: .* захватывает слишком много.
  4. Экранируйте специальные символы, если ищете их буквально; в выражениях выше используются классы символов, чтобы обойтись без экранирования.
  5. Сохраняйте удачные шаблоны в общий документ: очистка адресов регулярными выражениями.

Связанные материалы. Регулярные выражения используются и при сканировании крупных сайтов: как настроить сканирование, и при сравнении адресов до и после переезда: сравнение адресов.

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

Зачем регулярные выражения SEO-специалисту?

Чтобы одним шаблоном охватить тысячи адресов: отфильтровать отчёты, найти проблемы в выгрузках и записать правила сервера.

Как проверить выражение до применения на сервере?

На наборе реальных адресов, которые должны и не должны совпасть, в тестовой среде или онлайн-проверке, прежде чем выкладывать правило.

Почему опасны слишком широкие выражения?

Они захватывают лишние адреса: правило перенаправления может задеть корректные страницы и сломать работу сайта.

Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.

Читайте также