Перенаправление с помощью HP и mod_rewrite

С этого момента в данной главе будет обсуждаться в основном использование
HTTP-кода состояния 301. Его можно реализовать либо с помощью modrewrite,
либо с помощью РНР.
При использовании mod_rewrite перенаправление выполняется аналогично подмене URL, но только в параметре указывается код перенаправления. Следующее правило выполняет перенаправление 302 на bar.php, если первоначальный запрос выполняется на fоо.php:
RewriteRule Afoo\.php$ /bar.php [R=301,L]
В этом правиле нет ничего нового для вас — за исключением нового параметра R
в конце — но этот параметр существенно меняет дело! С параметром R или без него посетитель все равно увидит контент, предоставляемый программой bar.php. Но при выполнении перенаправления Web-клиент пользователя выполняет двачзапроса к Web-серверу. Вначале он запрашивает f оо. php и получает в HTTP-заголовке код перенаправления 301 с новым местоположением bar .php. Затем Web-клиент запрашивает bar.php и изменяет URL в адресной строке, чтобы сообщить пользователю, что загружен новый URL.
В PHP для выполнения перенаправления нужно добавление HTTP-заголовков с помощью
функции header ( ) . Чтобы программа foo.php выполняла перенаправление
301 на bar .php, она должна выглядеть так:
<?php
header (' HTTP/1.1 301 Moved Permanently1) ;
header('Location: http://www.example.com/bar.php');
?>
Если заголовок Location употребляется без явного указания кода состояния, то по умолчанию подразумевается временное перенаправление 302. Не забывайте об этом.
На практике, если для переделки сайта требуется изменение URL-адресов, Web-
мастер должен выполнить перенаправление 301, по крайней мере, наиболее важных URL на их новые аналоги.'Иначе ссылочная ценность будет потеряна.
Ряд перенаправлений 301 облегчает эту проблему. Если ваш сайт уже проиндексирован поисковыми механизмами, то нужно систематически переписать все старые URL на новые.