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

Регулярные выражения являются мощным инструментом в арсенале seo-шника. Некоторые специалисты, поневоле сталкивающиеся с регулярными выражениями в .htaccess или Google Analytics, боятся этого непонятного языка, но как только начинают разбираться, входят во вкус и осознают, как эти конструкции облегчают жизнь и становятся мощным инструментом для работы с текстовыми данными. В этой статье простым языком описаны основы регулярных выражений и приведены примеры их использования в SEO и аналитике. Материал будет полезен всем, кто так или иначе связан с обработкой данных в SEO.

Что такое регулярные выражения

Регулярное выражение (по англ. Regular Expression или просто RegExp) это определенная конструкция для поиска вхождений (чего бы то ни было) в текстовой строке. С помощью этого формального языка можно вычленять из текста, например, телефоны, email-адреса, любые куски текста и так далее. Часто RegExp используют программисты при проверке вводимых данных или при написании парсеров, но SEO-специалистам также приходится сталкиваться с регулярками при работе с Google Analytics, Яндекс.Метрикой, RewriteRule в .htaccess или даже в текстовых редакторах для быстрого поиска и замены строк.

Основы регулярных выражений

Рассмотрим популярный пример использования регулярных выражений для настройки редиректа на сайте с версии “без www” на www-домен.

RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

Регулярные выражения здесь выделены жирным. Что значат эти точки и другие знаки? Выглядит очень запутанно. И чтобы разобраться с этим, нужно понимать синтаксис RegExp.

«^» — карет, циркумфлекс или просто галочка. Начало строки

Этот символ используется для обозначения начала строки (если не используется внутри конструкции «[ ]»). Например, если вы хотите найти все ключевые слова, начинающиеся на слово «купить», конструкция будет выглядеть просто: ^купить. Без этого знака будут найдены все ключевые слова, содержащие слово «купить», не обязательно в начале.

К примеру, вы можете использовать это в расширенных фильтрах Google Analytics.

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

Вы можете возразить: зачем использовать регулярки, там где можно обойтись без них? В фильтрах Google Analytics есть пункт «начинается с». Я абсолютно согласен, и этот пример привел лишь для пояснения синтаксиса, дальше мы увидим, что комбинация разных конструкций решает задачи, которые сложно решить без использования регулярных выражений.

«$» — знак доллара. Конец строки

В отличие от галочки, доллар обозначает конец строки. Уже понятно, что конструкция москва$ найдет все фразы, заканчивающиеся на слово «москва».

«.» — точка. Любой символ

Точка обозначает любой символ, но только один. Сама по себе точка используется и встречается редко, чаще вместе с другими конструкциями, например, «.*».

«*» — знак умножения, звездочка. Любое число предыдущих символов.

Звездочка обозначает любое число символов (или группы символов), которые записаны перед этим знаком, в том числе и отсутствие этого символа.

Вместе с предыдущим символом «точка» получается удобная конструкция «.*», означающая любое количество любых символов. Например, выражение

RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

Уже становится более понятным, здесь происходит редирект любой из страниц на новый URL.

Предположим, в отчетах по страницам я хочу найти данные для страниц из раздела seo-компаний, где оставляли комментарии, чтобы проанализировать поведение этих пользователей. Данные страницы у меня выглядят примерно так:

/companies/seo-studio?commented=1

Здесь меняется лишь средняя часть, а начало и конец остаются одинаковыми. Поэтому, зная уже перечисленные элементы, можно составить регулярное выражение и использовать его в фильтре:

^/companies/.*commented=1$

Получим следующий отчет:

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

Ещё один полезный пример использования этой конструкции — закрытие панели управления WordPress в .htaccess, открытие её только для вашего IP-адреса:

<FilesMatch ".*">
Order Deny, Allow
Deny from All
Allow from 200.20.21.145
</FilesMatch>

Где 200.20.21.145 это, к примеру, ваш IP адрес.

«+» — плюсик. Любое положительное число предыдущих символов.

От предыдущего знака «*» плюсик отличается тем, что символ обязательно должен встретиться хотя бы один раз.

«?» — вопросительный знак. Необязательная встречаемость последнего символа

Вопросительный знак указывает на то, что последний символ или группа могут встречаться в тексте, а могут отсутствовать (то есть, их встречаемость не обязательна). Удобно, когда вы не знаете, например, будет ли на конце адреса слеш или нет:

^/articles/?$

Или например, когда вы ищите ключевые слова и учитываете определенные опечатки:

купить лест?ницу

Данное выражение найдет все ключевые слова вашей аудитории, где встречались фразы «купить лестницу» и «купить лесницу».

«( )» — круглые скобки. Группировка конструкций.

Аналогично применению в математике, круглые скобки в регулярных выражениях используются для группировки. И уже для группы символов или правил можно указывать другие правила. Кроме этого, найденные соответствия в скобках возвращаются в отдельные переменные $1, $2 и т.д., в зависимости от порядкового номера группы.

Например, нам нужно перенаправить всех пользователей из подпапки «domain.com/blog/» на поддомен blog.domain.com:

RewriteRule ^blog/(.*)$ http://blog.domain.com/$1 [R=301,L]

Здесь правило ^blog/(.*)$ означает, что адрес начинается с blog/, далее может идти какая-то последовательность символов (например, адрес какой-то статьи в блоге). Всю эту последовательность мы объединяем в скобки и далее используем переменную $1, чтобы сделать постраничный редирект на поддомен.

«|» — вертикальная линия. Оператор «ИЛИ».

Вертикальная линия обозначает оператор ИЛИ, когда нам нужно перечислить в поиске определенные варианты. Допустим, мы ищем ключевые слова, где встречается слово «купить» или «куплю»:

купить|куплю

Или же хотим посмотреть статистику по нескольким разделам — статьям (/articles/) и пресс-релизам (/pr/):

^/(articles|pr)/

Или возьмем другой пример. Допустим, мы хотим закрыть от индексации поисковыми системами разделы admin, login, register и некоторые другие. Чтобы не лезть в код сайта, можно сделать это несколькими строчками кода в .htaccess, используя HTTP-заголовок X-Robots-Tag, который понимают большинство поисковых систем.

<FilesMatch "^/(admin|staff|login|register).*$">
Header set X-Robots-Tag "noindex, nofollow"
</FilesMatch>

«[ ]» — квадратные скобки. Любой из перечисленных символов.

В квадратных скобках можно перечислить символы и один из них может встречаться в искомом тексте. Если первый символ в этой конструкции – «^» (шапочка/галочка), то массив работает наоборот – символ не должен совпадать с тем, что перечислены в скобках. Чтобы не перечислять некоторые популярные последовательности, например, весь алфавит или ряд цифр, можно использовать диапазон: 0-9 означает диапазон от 0 до 9, a-c — диапазон символов от «a» до «с» .

Допустим, мне интересно, как люди находили мой сайт, когда искали явные инструкции (статьи начинаются на «10 лучших…» или «15 самых…»).

^[0-9]+

Здесь я увижу, что многие спрашивали 301 редирект, но это не то, что я искал, поэтому, в расширенном фильтре я исключу все, что содержит 301.

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

И увижу следующие вопросы, на которые можно ответить в одной из статей, если её ещё не было на блоге.

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

Всего найдено 140 вариантов, среди которых есть очень интересные, вроде «100 топ сайтов копирайтинга» или «5 задач на собеседовании в яндекс» :) Сделаем это ссылкой.

«{ }» — фигурные скобки. Повторение символа несколько раз.

Фигурные скобки используются для указания, сколько именно раз должен встречаться символ или группа символов. Если указано два числа в скобках, через запятую, то это будет интервалом «от и до».

Например, чтобы найти в тексе почтовый индекс, длина которого составляет 6 цифр и начинается он на 14, можно использовать следующее регулярное выражение.

14[0-9]{4}

Здесь мы указали 14, а далее последовательность чисел, повторяющаяся 4 раза, итого общая длина будет 6. Более сложный пример:

www\.domain\.[a-z]{2,6}

Найдет все доменные зоны, основного домена, включая www.domain.ru и www.domain.travel.

Ещё более сложный пример — нам нужна статистика по 2, 3 и 4-словникам по отдельности. Для этого в Google Analytics в отчете по ключевым словам используем фильтр:

^[^\s]+(\s[^\s]+){2}$

Конструкция «\s» означает пробел (space), именно им разделяются слова. Здесь [^\s]+ указывает, что фраза должна начинаться с любого количества непробелов, далее следует пробел и еще раз какое-то слово. Последние два правила «пробел + слово» могут встречаться именно 2 раза (конструкция «( ){2}»). Так мы получаем список всех трехсловников и статистику по ним.

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

«\» — обратный слеш. Экранирование служебных символов.

В синтаксисе регулярных выражений используются точки, вопросительные знаки и другие, которые также могут быть интересны для поиска. В этом случае помогает символ обратного слеша. Например, для поиска точки, мы экранируем её — «\.», то же самое с другими символами.

Например, в Google Analytics у меня настроена одна из целей — использование внутреннего поиска. Человек использует поиск, если я вижу в URL конструкцию «/?q=». У меня в настройках это выглядит так: «/\?q\=».

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

Как вы заметили, в некоторых примерах выше я также использовал знак экранирования.

Существуют и другие символы для оперирования регулярными выражениями, полный список вы найдете в Википедии. Но перечисленного выше должно хватить для основных задач SEO-специалиста.

Ещё несколько примеров

— Поиск записей с ссылками.

Язык SQL тоже предусматривает поиск по соответствию регулярному выражению. Например, у вас есть форум и необходимо найти все посты, где встречается ссылка. SQL-запрос при этом может выглядеть следующим образом:

SELECT * FROM `posts` 
WHERE `content` RLIKE 'https?://([а-яa-z0-9\-]+\.)+[a-z]{2,7}'

— Замена всех абсолютных ссылок в БД при переезде сайта на другой домен

UPDATE `articles` SET 
`content`=REPLACE(`content`, 'old-domain.crimea.ua', 'new-domain.ru') 
WHERE `content` RLIKE 'old-domain\.com'

— Редирект в .htaccess с HTML-версии сайта на PHP

RedirectMatch /(.*)\.html$ /$1.php

— Редирект со страницы /index.php на корневую «/» для избавления от дублей

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.com.ua/ [R=301,L]

— Наличие UTM-метки в URL

(?:\?|&)utm=([^&$]+)

— Добавление сегмента в Google Analytics для отслеживания органического трафика

(кликните для увеличения изображения)
Регулярные выражения для SEO

— Исключение офисного трафика из статистики Google Analytics

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

— Блокировка доступа к сканированию сайта роботами Ahrefs и Open Site Explorer.

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^rogerbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^AhrefsBot
RewriteRule .* - [F]

Выше приведены достаточно не сложные, но часто используемые примеры, и здесь совсем не затронута Яндекс.Метрика, где также можно использовать регулярные выражения. Для тестирования своих конструкций и тренировок с RegExp можно использовать удобный сервис http://www.rubular.com, а здесь можно скачать и распечатать хорошую памятку по регулярным выражениям, если вы решили к ним подойти более серьезно.

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

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

Регулярные выражения для SEO | | 2014-06-24 00:48:00 | | Блоги и всяко-разно | | Регулярные выражения являются мощным инструментом в арсенале seo-шника. Некоторые специалисты, поневоле сталкивающиеся с регулярными выражениями в .htaccess или Google Analytics, боятся этого | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: