Немного о редиректах

Время от времени каждому веб мастеру приходится делать перенаправления (редиректы) с одной группы страниц на другие. Для веб сервера apache их обычно помещают в файл .htaccess. В сети много хороших примеров, но для их использования лучше иметь некоторое понимание как это работает.

Во-первых, имеются два вида директив, с помощью которых обычно делают редиректы: директива Redirect из модуля apache mod_alias и директивы RewriteCond, RewriteRule из модуля apache mod_rewrite.

Директива Redirect первым обязательным параметром имеет путь в локальной системе, начинающийся с «/», то есть с корня веб сайта. Тот факт, что здесь неявно используется совпадение по префиксу, достаточно опасен, поэтому я рекомендую использовать его для перенаправления файлов. Пример:
Redirect 301 /index.php http://somesite/
или
Redirect permanent /index.php http://somesite/somefile.php
В приведенном примере мы делаем один и тот же постоянный редирект 301 с индексной страницы сайта на корень другого сайта (в первом примере) и на некоторый файл в другом примере.

При работе с директивами RewriteCond, RewriteRule нужно помнить о разнице между внутренними и внешними редиректами. Когда второй параметр RewriteRule указывает на другой сервер и/или использован флаг [R], производится внешний редирект, в противном случае внутренний. При внутреннем редиректе в адресной строке браузера будет отображаться первоначальный URL и для поисковой системы он также будет незаметен. Следующий пример показывает как перенаправить целую директорию с одного сервера на другой:
RewriteEngine on
RewriteRule ^somedir/(.*) http://somehost/newdir/$1 [R,L]

Добавить комментарий

Ваш e-mail не будет опубликован.