Редирект на .htaccess (Правило RewriteEngine)

Что такое .htaccess?



.htaccess - это специальный файл веб-сервера Apache, в котором записаны инструкции для управления поведением сервера в этой папке, и во всех вложенных (если в них отсутствуют свои .htaccess).

Как использовать?



Для осуществления редиректа в .htaccess, можно использовать любую из трех директив Apache (Апач, httpd): Redirect, RedirectMatch, либо RewriteRule (при включенном RewriteEngine).

Синтаксис:



Redirect [status] URL-path URL-to-redirect


Необязательный параметр status - это три цифры - код редиректа (например, 301). Если не указан, то по умолчанию подставляется 302.

URL-path - часть запрашиваемого пользователем (или поисковиком) адреса, которая должна обязательно начинаться со слеша (/).

URL-to-redirect - полный адрес сайта (и, возможно, часть пути), на который будет осуществляться редирект. Должен быть вида https://site.ru/ - то есть обязательно должен присутствовать протокол (https:// или http://) и закрывающий адрес сайта слеш (/).

Если URL-path заканчивается не слешем, то редирект будет срабатывать только в случае точного совпадения запрошенного пользователем адреса и URL-path.

Если URL-path заканчивается слешем, то редирект сработает не только для указанного адреса, но и для всех, которые начинаются на указанный. А к URL-to-redirect будет добавлена часть адреса, следующая за последним указанным слешем в URL-path.



RedirectMatch [status] URL-regexp URL-to-redirect


Действие директивы RedirectMatch аналогично Redirect, но в параметрах URL-regexp и URL-to-redirect можно использовать регулярные выражения.



RewriteEngine on # должно быть включено (on) для работы RewriteRule

RewriteRule URL-regexp URL-to-redirect [L,R[=status]]


У директивы RewriteRule более широкий спектр применения. Который, в числе прочих возможностей, разрешает ее использования и для редиректа - с указанием в конце строки в квадратных скобках [ ] флагов L (выполнить немедленно) и R (редирект).

Примеры:



Redirect / https://yandex.ru/yandsearch?text= # Выполнится 302 редирект (по умолчанию) на поиск в Яндексе символов, введенных в адресную строку после названия Вашего сайта.

# То есть если посетитель введет https://ваш_сайт.ru/page, то браузер его перенаправит на https://yandex.ru/yandsearch?text=page


Redirect 301 /hello.html https://google.ru/search?q=bye # В случае перехода на страницу https://ваш_сайт.ru/hello.html выполнится 301 редирект на поиск в Гугле фразы "bye".


RedirectMatch (.*)\.jpg$ https://для.картинок.ru$1.jpg # "Временно" (по умолчанию действует 302 редирект) переадресовываем все запросы jpeg-картинок на какой-либо бесплатный хостинг

# или то же самое, но с применением RewriteRule:


RewriteEngine on

RewriteRule (.*)\.jpg$ https://для.картинок.ru$1.jpg [L,R]