Регулярні вирази для 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, ac - діапазон символів від «a» до «з».
Припустимо, мені цікаво, як люди знаходили мій сайт, коли шукали явні інструкції (статті починаються на «10 кращих ...» або «15 самих ...»).
^ [0-9] +
Тут я побачу, що багато хто запитував 301 редирект, але це не те, що я шукав, тому, в розширеному фільтрі я виключу все, що містить 301.
І побачу такі питання, на які можна відповісти в одній зі статей, якщо її ще не було на блозі.
Всього знайдено 140 варіантів, серед яких є дуже цікаві, на кшталт «100 топ сайтів копірайтингу» або « 5 завдань на співбесіді в яндекс »🙂 Зробимо це посиланням.
"{ }" - фігурні дужки. Повторення символу кілька разів.
Фігурні дужки використовуються для вказівки, скільки саме раз повинен зустрічатися символ або група символів. Якщо вказано два числа в дужках, через кому, то це буде інтервалом «від і до».
Наприклад, щоб знайти в текс поштовий індекс, довжина якого становить 6 цифр і починається він на 14, можна використовувати наступне регулярний вираз.
14 [0-9] {4}
Тут ми вказали 14, а далі послідовність чисел, що повторюється 4 рази, разом загальна довжина буде 6. Більш складний приклад:
www \ .domain \. [az] {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-] +.) + [Az] {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} ^ [AZ] {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 і аналітики, діліться ними в коментарях.
Що означають ці точки і інші знаки?Ви можете заперечити: навіщо використовувати регулярки, там де можна обійтися без них?
Людина використовує пошук, якщо я бачу в URL конструкцію «/?