Возможности .htaccess: редирект

Продвижение сайта невозможно без правильной настройки файла .htaccess, имеющего множество полезных директив, при помощи которых можно реализовать следующие возможности:

1) Произвольный редирект
2) Управление доступом
3) Изменение кодировки
4) Обработка ошибок
5) Переопределение главной страницы
6) Ассоциировать свой обработчик под каждый вид файла
7) Запретить просмотр содержимого директорий
8) Блокировка IP-диапазона
9) Установка паролей на каталоги

В данной статье мы более подробно рассмотрим первый из аспектов .htaccess.

.htaccess редирект

Перенаправление с «www» на адрес «без www» мы рассмотрели в предыдущей статье. В этот раз коснёмся других возможностей:

Редирект на другую страницу или адрес сайта. При запросе страницы «/новости.html» нас перенаправит по адресу «/новости.html».

Redirect /новости.html http://сайт.ru/новости.html

Редирект на другой адрес веб-сайта при обращении к определённой странице.

Redirect /article http://www.сайт.ru/article
Redirect /news http://news.сайт.ru

Редирект по расширению (маске) файлов. В следующем примере все обращения к сайту, которые не относятся к маскам exe, gif и txt будут перенаправлены на главную страницу. Для выполнения условия mod_rewrite должен быть активирован.

RewriteEngine On
RewriteRule !.(exe|gif|txt)$ index.html

Редирект для организации перенаправления по IP-адресу посетителя. При переходе на сайт с IP-адреса «100.100.10.10» пользователю будет выдана страница «новости.html».

SetEnvIf REMOTE_ADDR 100.100.10.10 REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /новости.html

Редирект с несколькими IP-адресами. В данном примере мы используем 2 IP-адреса: «100.100.10.10» и «100.100.10.20». При переходе на сайт с любого из этих адресов нам будет отдана страница «http://сайт.ru». Условие работает только при наличии директивы RewriteEngine on.

RewriteEngine on
RewriteCond %{REMOTE_ADDR} (100.100.10.10|100.100.10.20)
RewriteRule .* http://сайт.ru [R=301,L]

Редирект в зависимости от значения HTTP-referer (реферер). В данном примере все посетители, которые перешли на наш сайт с сайта «http://пример.ru» будут видеть не главную страницу, а страницу «warning.html». Пользователи, которые перешли на наш сайт без реферера «http://пример.ru» увидят обычную начальную страницу.

RewriteCond %{HTTP_REFERER} http://пример.ru
RewriteRule ^/index.html$ /warning.html [L]

17.10.2013