Регулярные выражения для 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.
Вы можете возразить: зачем использовать регулярки, там где можно обойтись без них? В фильтрах Google Analytics есть пункт «начинается с». Я абсолютно согласен, и этот пример привел лишь для пояснения синтаксиса, дальше мы увидим, что комбинация разных конструкций решает задачи, которые сложно решить без использования регулярных выражений.
«$» — знак доллара. Конец строки
В отличие от галочки, доллар обозначает конец строки. Уже понятно, что конструкция москва$ найдет все фразы, заканчивающиеся на слово «москва».
«.» — точка. Любой символ
Точка обозначает любой символ, но только один. Сама по себе точка используется и встречается редко, чаще вместе с другими конструкциями, например, «.*».
«*» — знак умножения, звездочка. Любое число предыдущих символов.
Звездочка обозначает любое число символов (или группы символов), которые записаны перед этим знаком, в том числе и отсутствие этого символа.
Вместе с предыдущим символом «точка» получается удобная конструкция «.*», означающая любое количество любых символов. Например, выражение
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
Уже становится более понятным, здесь происходит редирект любой из страниц на новый URL.
Предположим, в отчетах по страницам я хочу найти данные для страниц из раздела seo-компаний, где оставляли комментарии, чтобы проанализировать поведение этих пользователей. Данные страницы у меня выглядят примерно так:
/companies/seo-studio?commented=1
Здесь меняется лишь средняя часть, а начало и конец остаются одинаковыми. Поэтому, зная уже перечисленные элементы, можно составить регулярное выражение и использовать его в фильтре:
^/companies/.*commented=1$
Получим следующий отчет:
Ещё один полезный пример использования этой конструкции — закрытие панели управления 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.
И увижу следующие вопросы, на которые можно ответить в одной из статей, если её ещё не было на блоге.
Всего найдено 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}»). Так мы получаем список всех трехсловников и статистику по ним.
«\» — обратный слеш. Экранирование служебных символов.
В синтаксисе регулярных выражений используются точки, вопросительные знаки и другие, которые также могут быть интересны для поиска. В этом случае помогает символ обратного слеша. Например, для поиска точки, мы экранируем её — «\.», то же самое с другими символами.
Например, в Google Analytics у меня настроена одна из целей — использование внутреннего поиска. Человек использует поиск, если я вижу в URL конструкцию «/?q=». У меня в настройках это выглядит так: «/\?q\=».
Как вы заметили, в некоторых примерах выше я также использовал знак экранирования.
Существуют и другие символы для оперирования регулярными выражениями, полный список вы найдете в Википедии. Но перечисленного выше должно хватить для основных задач 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 для отслеживания органического трафика
(кликните для увеличения изображения)
— Исключение офисного трафика из статистики Google Analytics
— Блокировка доступа к сканированию сайта роботами 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 и аналитики, делитесь ими в комментариях.
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-03-13 » Стратегии SEO на 2024 год
- 2024-03-13 » Как использовать анимацию с помощью JavaScript-библиотеки GSAP
- 2024-03-13 » Использование GSAP 3 для веб-анимации
- 2024-03-13 » Cогласование топографической съёмки с эксплуатирующими организациями
- 2024-02-19 » Теряются лиды? Как настроить сквозную аналитику
- 2024-02-17 » Мерч и IT: на что обратить внимание в 2024 году
- 2024-02-16 » Копируем с RSync: основные примеры синхронизации файлов
- 2024-02-15 » Лучшие noCode AI платформы для создания диалоговых ботов
- 2024-02-14 » Факторы ранжирования Google 2024 — исследование Semrush
- 2024-02-12 » Перенос сайта на другой хостинг
- 2024-02-05 » В России сформирован реестр хостинг-провайдеров
- 2024-02-04 » Использование SSH для подключения к удаленному серверу Ubuntu
- 2024-02-03 » Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция
- 2024-02-02 » Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам
- 2024-02-01 » GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
- 2024-01-29 » Introduction to GitLab’s CI/CD for Continuous Deployments
- 2024-01-26 » Настройка GitLab CI/CD
- 2024-01-25 » Установка shell gitlab runner
- 2024-01-25 » Установка и регистрация gitlab-runner в docker контейнере
- 2024-01-25 » Переменные Gitlab-Ci
- 2024-01-25 » Настройка CI/CD в GitLab для синхронизации проекта с веб-серверами
- 2024-01-25 » Копирование файлов scp
- 2024-01-21 » Бездепозитные бонусы от казино: обзор условий и правил использования
- 2024-01-18 » Современная обработка ошибок в PHP
- 2024-01-18 » Пример шаблона проектирования MVC в PHP
- 2024-01-18 » Мифический человеко-DevOps
- 2023-12-28 » Google подвел итоги 2023 года в поиске
- 2023-12-28 » 5 ошибок отдела продаж, из-за которых вы теряете клиентов
- 2023-12-28 » Американский суд признал монополию Google на рынках дистрибуции Android-приложений
- 2023-12-28 » Хостинг-провайдер GoDaddy перестанет оказывать услуги пользователям из России
Неудача — это не единичное внезапное событие. Ваш провал не возникает внезапно. Напротив, неудача появляется, когда вы совершаете одни и те же ошибки изо дня в день. Джим Рон |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.