Полный цикл в digital

Метасимволы htaccess

Спецсимволы и обычные знаки
Спецсимволы $ ^ . * + ? \ { } [ ] ( ) |
Обычные знаки @ : , ' " ; - _ = <> % # ~ `& ! /
Спецсимволы
Символ Аналог Описание
! Отрицание
. Любой символ кроме \n и перевода строки
\ Экранирование спец символа
| [] Логическое «или»
\d [0-9] Все цифры
\D [^\d] Все не цифры
\s [ \t\v\r\n\f] Все символы пробела, включая переносы строк, табуляции и неразрывные пробелы
\S [^\s] Все символы, кроме пробела, переноса строк, табуляции и неразрывного пробела
\w [0-9a-z_] Все цифры или буквы включая знак подчеркивания (кириллица не входит в буквы)
\W [^\w] Любой символ, кроме цифры, буквы или знака подчеркивания
Якоря
Символ Пример Описание
^
^stena
Привязка к началу строки
$
stena$
Привязка к концу строки
Ограничитель
Символ Пример Описание
# / &
#stena#
/stena/
&stena&
В качестве ограничителей могут выступать не только #, но и любые другие символы (только не буквы и не цифры).Всё зависит от того, что мы хотим использовать внутри выражения. Если будет использована решётка, то внутри её придётся экранировать. Но если поставить ограничители &, то решётку внутри них не придётся экранировать.
Квантификаторы символьные
Символ Аналог Описание
+ {1,} Символ повторяется один или более раз (оператор действует на тот символ, который стоит перед ними)
* {0,} Символ повторяется ноль или более раз (оператор действует на тот символ, который стоит перед ними)
? {0,1} Символ повторяется ноль или один раз, может присутствовать или нет (оператор действует на тот символ, который стоит перед ними)
Квантификаторы {}
Символ Пример Описание
{5}
{5}
Пять повторений
{2,5}
{2,5}
От двух до пяти повторений (оба включительно)
{2,}
{2,}
Повторяется два и более раз
{m,n}?
{m,n}
Повторяется минимальное количество раз
{m,}?
{m,}
Повторяется указанное количество раз
Набор символов, логический оператор «или» [ ]
Символ Пример Описание
[abv]
[abv]
Диапазон символов «любое из», работает как логический оператор или
[a-z]
[a-z]
Диапазон маленьких латинских букв
[^a-z]
[^a-z]
Исключающий диапазон символов «любое кроме маленьких латинских букв»
[A-Z]
[A-Z]
Диапазон больших латинских букв
[^A-Z]
[^A-Z]
Исключающий диапазон символов «любое кроме больших латинских букв»
[а-яё]
[а-яё]
Диапазон маленьких русских букв
[А-ЯЁ]
[А-ЯЁ]
Диапазон больших русских букв
[0-9]
[0-9]
Диапазон цифр от 0 до 9
[.+-*/]
[.+-*/]
Спецсимволы внутри [] становятся обычными символами. Это значит, что их не надо экранировать обратным слешем. Исключение составляют только сами [] и ^ которые нужно экранировать
Группа символов, логический оператор «и» ( )
Символ Пример Описание
()
(ab)
Группирует вместе символы, содержащиеся в круглых скобках, найдет вместе стоящие ab
Карманы ( )
Символ Пример Описание
()
RewriteRule ^(.+)/(.+)$ /?a=$1&b=$2 [R=301,L]
# кладем в карман RewriteCond и используем в RewriteRule
RewriteCond %{REQUEST_URI} (.+)
RewriteRule (.+) index.php?get=%1
Карман - это такой способ хранения части того, что мы ищем. Карманы появляются, если использовать скобки ( ). В RewriteRule их можно использовать подставляя порядковый номер и знак $. В RewriteCond тоже есть карманы доступные в RewriteRule, их можно использовать подставляя порядковый номер и знак %.
Несохраняющие скобки (?: )
Символ Пример Описание
(?: )
(?:[а-я]+) ([а-я]+))
Скобки () выполняют две функции - группировка символов и функцию кармана. А что делать, если нам нужно сгруппировать, но в карман не класть? Для решения такой проблемы придуманы специальные несохраняющие скобки (?: ) - они группируют, но не кладут в карман
Позитивный просмотр вперед (?: )
Символ Пример Описание
(?: )
aaa(?=x)
Ищет строку aaa и заменяет ее на !, но только если после aaa стоит x, а сам x при этом не заменит
Негативный просмотр вперед (?! )
Символ Пример Описание
(?! )
aaa(?!x)
Наоборот, говорит чего должно не быть. В следующем примере замена произойдет, только если после aaa не стоит x
Позитивный просмотр назад (?<= )
Символ Пример Описание
(?<= )
aaa(?<=x)
Ищет строку aaa и заменяет ее на !, но только если перед aaa стоит x, а сам x при этом не заменит
Негативный просмотр назад (?<! )
Символ Пример Описание
(?<! )
(?<!x)aaa
В следующем примере замена произойдет, только если перед aaa не стоит x
Позиции внутри строк
Символ Пример Описание
^ ^a Соответствует началу строки
aaa aaa
$ a$ Соответствует концу строки
aaa aaa
\A \Aa Соответствует началу текста
aaa aaa
aaa aaa
\z a\z Соответствует концу текста
aaa aaa
aaa aaa
\b a\b
\ba
Граница слова, утверждение: предыдущий символ словесный, а следующий нет, либо наоборот
aaa aaa
aaa aaa
\B \Ba\B Отсутствие границы слова
aaa aaa
\G \Ga Предыдущий успешный поиск, поиск остановился на 4-й позиции, где не нашлось a
aaa aaa
Жадность
Символ Описание
? Жадность можно ограничивать всем операторам повторения, в том числе и ?, и {} и + и * - вот так: ?? и {}? и +? и *?
Флаги RewriteRule
Дополнительные опции. Перечисляются в квадратных скобках через запятую, скажем [R=301,L].Пример использования:
RewriteRule test\.php index\.php [R=301,L]
Символ Описание
R[=code] Перенаправить на новый URL, опционально с кодом:
301 перенесен постоянно
302 перенесен временно
403 доступ запрещен
404 страница не найдена
410 мертвая страница
F Доступ запрещен (посылает 403 заголовок)
G Мертвая страница (удалена)
P Прокси - по этому флагу Apache выполняет подзапрос (sub-request) к указанной странице с использованием программного модуля mod_proxy, при этом пользователь ничего не узнает об этом подзапросе. Если модуль mod_proxy не входит в состав вашей сборки Apache, то применение данного флага вызовет ошибку
L Последнее правило
N Следующий круг (перезапуск правил)
C Цепочка
T=mime-type Установить MIME-тип
NS Пропустить внутренний подзапрос
NC Не учитывать регистр
QSA Добавить строку запроса
NE Не экранировать при выводе
PT Пропустить через следующий
S=x Пропустить следующие x правил
E=var:value Установить переменную окружения
Флаги RewriteCond
Дополнительные опции. Перечисляются в квадратных скобках через запятую, скажем [OR]. Пример использования:
RewriteCond %{REQUEST_URI} \.php [OR]
RewriteCond %{REQUEST_URI} \.html
Символ Описание
NC Не учитывать регистр
OR Комбинировать по принципу «или»
Проверки
В условиях могут быть использованы проверки, причем можно предварить шаблон символом !, чтобы обозначить несоответствие шаблону. Пример использования:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.php
< условие Лексикографически меньше
> условие Лексикографически больше
= условие Равенство
<= условие Лексикографически меньше или равно
>= условие Лексикографически больше или равно
-eq Численно равно
-ge Численно больше или равно
-gt Численно больше
-le Численно меньше или равно. Во избежание путаницы с заглавной буквой -l используйте -L
-lt Численно меньше. Во избежание путаницы с заглавной буквой -l используйте -L
-d Является ли директорией
-f Является ли обычным файлом
-F Существует ли файл
-l Является ли символической ссылкой
-L Является ли символической ссылкой. Аналог флага -l
-s Является ли обычным файлом ненулевого размера
-U Существует ли заданный URL
-x Является ли файл исполняемым
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг