Содержание
Обновлено: 23 декабря, 2021
Советы по настройке редиректов
- Располагайте переадресации страниц в файле от частных к более глобальным (сверху вниз). Например: простая переадресация двух страниц стоит выше, чем глобальное правило редиректов с www на без www.
- Избегайте двух, трех и т.д. последовательных редиректов. Правила должны быть настроены так, что при возникновении редиректа он должен перенаправлять пользователя (робота) только один (!) раз. Каждое лишнее переадресация – это секунды драгоценного времени отдачи страницы, это нагрузка на сервер, это нечеткие команды для поисковых роботов.
- Размещать все правила лучше после двух строк:
Options +FollowSymLinks RewriteEngine On
- Для доменов в зоне РФ действуют все те же правила, но только все кириллические символы необходимо заменить на альтернативный код.
- Не забывайте, что многие браузеры кешируют (запоминают редиректы), поэтому проверять переадресации лучше на сайте — bertal.ru либо mainspy.ru/otvet_servera
- Все правила выполняются в прямом порядке их следования в файле .htaccess и правило, написанное позже, и будет выполняться позже.
- Строчка RewriteCond — условие выполнения правила RewriteRule. Если условие выполняется, то срабатывает редирект. Правила могут задаваться с помощью регулярных выражений.
Синтаксис для регулярных выражений
. — Точка заменяет произвольный символ. [abc] — обозначает перечень символов, совпадающих с буквами a, b, или с. [^abc] — перечень символов, которые не входят в указанный диапазон. * — означает, что предшествующий символ может повторяться (0 или более раз). [abc]* — команда найдёт идущие подряд символы из заданного набора. [^abc]* — с точностью до наоборот. .* — заменяет абсолютно любой набор символов. “.*” — найдёт все подстроки между кавычками. ^ — начало строки (в том случае, если используется в начале выражения). $ — обозначает конец строки. \w — буква, цифра или подчёркивание _. \d — заменяет любую цифру. \D — заменяет любой символ, но не цифру. [0-9] — заменяет любую цифру. [a-z] — любая буква от a до z (весь латинский набор символов) в нижнем регистре. [A-Z] — любая буква от A до Z в ВЕРХНЕМ регистре. [a-zA-Z] — любая буква от a до Z в любом регистре. [a-Z] — то же самое.
Спецсимволы, используемые в правилах и их значения.
^ — спецсимвол начала строки; $ — спецсимвол конца строки; ! — спецсимвол отрицания; . — точка, заменяет любой символ, но только один; () — группировка; \ — «экранирующий» слеш, следующий символ после него считается обычным, а не спецсимволом. ? — символ повторяется 0 или 1 раз. + — повторяется от 1 до 65536 раз. * — повторяется от 0 до 65536 раз. NC — флаг NoCase, отключающий проверку регистра символов при срабатывании правила. R — флаг Redirect, производит процесс остановки изменения URL-адреса и возвращает результат. Чаще всего используется значение R=301, но возможны и другие для временных перенаправлений (302, MOVED TEMPORARY). L — флаг Last, останавливает формирования URL-адреса и строка считается окончательной.