Для тих, хто не спить!
Знижка -15%
Ми використовуємо cookie-файли
Для оптимізації роботи нашого сайту ми використовуємо cookie-файли. Продовжуючи використовувати сайт, Ви погоджуєтеся з використанням cookie-файлів.
Новий дизайн
Панель керування
  • Русский
  • Українська
  • English
  • UAH
  • USD
  • RUB
  • EUR
  • 0-800-307-307 Гаряча лінія
  • +38 (044) 392-74-33 Київ
  • +38 (057) 728-39-00 Харків
  • +38 (056) 794-38-31 Дніпро
  • +38 (032) 229-58-93 Львів
  • +38 (048) 738-57-70 Одеса
  • +38(093) 170-15-42  Life
  • +38 (067) 400-88-44 Київстар
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7 (499) 348-28-61 Москва

2.12.11. Регулярні вирази

Примітка

Виконувати тестування і налагодження регулярних виразів зручно за допомогою сервісів, на зразок regex101.com або regexr.com.

У директивах .htaccess можна використовувати регулярні вирази для гнучкого налаштування правил. Приклад регулярного виразу:

RedirectMatch /([^/]*)/([^/]*)/script.php$ http://example.com/index.php?$1=$2
  • . - замінює один будь-який символ.
  • ? - вказує на необов'язкове використання попереднього символу (Наприклад, в конструкції tes?t підходитимуть як слова test так і tet).
  • * - означає, що попередній символ (група символів) може повторюватися (даний символ вказує необов'язковий повтор, тобто символ може зустрічатися як 0 раз, так і безліч).
  • [abc] - вказує перелік символів, які збігаються з буквами a, b або з.
    • [^abc] - перелік символів, які не використовуються. Тобто підійде будь-який символ, крім a, b або з.
    • [abc]* - перелік йдуть підряд символів, які будуть знайдені в рядку.
    • [^abc]* - перелік неприпустимих поспіль символів в рядку.
  • + - означає, що попередній символ (група символів) повинна повторюватися (на відміну від *, Даний символ вказує обов'язковий повтор, тобто символ може зустрічатися як мінімум 1 раз).
  • ! - символ логічного НЕ, використовується для формування правил винятків.
  • | - символ логічного АБО, встановлюється в групах.
  • () - угруповання конструкцій.
  • {x} - повторення символу кілька разів, де X - кількість повторень (кілька варіантів потрібно задавати через кому).
  • \ - екранування службових символів для використання їх в шаблонах.
  • .* - вказівка будь-якої кількості символів в будь-якому порядку. /.*/ - в такому випадку будуть підходити все подстроки між Слеш.
  • ^ - початок рядка, використовується на початку виразу.
  • $ - кінець рядка, вказується в кінці рядка.
  • \w - вказує на букву, цифру або підкреслення _.
  • \W - будь-який символ, крім літер, цифр і знака підкреслення.
  • \d - вказує на будь-яку цифру.
  • \D - вказує на будь-який символ, крім цифр.
  • \s - будь-який символ пробілу (відступу).
  • \S - будь-який не символ пробілу.

Вибірка з таблиці ASCII:

  • [0-9] - діапазон цифр від 0 до 9.
  • [a-z] - діапазон букв від a до z, латинський набір символів в нижньому регістрі.
  • [A-Z] - діапазон букв від A до Z в верхньому регістрі.
  • [a-zA-Z] або [a-Z] - діапазон букв від a до Z в будь-якому регістрі.

Для прикладу два URL:

  1. http://example.com/someurl/44/test/regular/expression.php
  2. http://example.com/url/4/another/test/somefile.php

Для створення шаблону переадресації, в який будуть входити всі запити, які починаються з someurl, Потрібно вказати так:

RewriteCond %{REQUEST_URI} ^/someurl/

В такому випадку обидві адреси будуть підпадати під правило:

RewriteCond %{REQUEST_URI} ^/.*url/

Використовуючи значення АБО можна домогтися правил для кількох варіантів:

RewriteCond %{REQUEST_URI} ^/(someurl|url)/

Використовуючи діапазон і повторення можна домогтися правил для перебору відповідних значень, приклад виведе перша адреса:

RewriteCond %{REQUEST_URI} ^(/+)[0-9]{2}(/+) 

А такий приклад виведе другий адреса:

RewriteCond %{REQUEST_URI} ^(/+)[0-9](/+) 

Щоб виключити з запиту посилання з використанням regular, Слід скористатися таким правилом:

RewriteCond %{REQUEST_URI} !/regular/