Иногда приходится менять адреса страниц или вообще доменные имена сайтов. Чтобы не потерять аудиторию и избежать ошибок при обращении к страницам по старым адресам обычно делают перенаправления или редиректы страниц по их новым адресам. Несколько примеров таких редиректов.
Редирект на html
Располагается в заголовке html документа
<html>
<head>
<meta http-equiv="refresh" content="0; url=http://example.com/" />
</head>
<body>
</body>
</html>
В этом примере перенаправление происходит по адресу http://example.com/ через 0 секунд. Продолжительность задержки может быть произвольной, а сам документ может содержать некий контент, который будет отображаться пока не произойдет перенаправление.
PHP redirect
Один из самых простых способов
<?php
header('Location: '.$newURL);
?>
В переменной newURL новый адрес страницы, куда и происходит перенаправление. Правда, редирект должен делаться до вывода любой информации скриптом.
Ну или совсем просто:
<?php
header('Location: http://example.com/');
?>
Перенаправление конкретных страниц в .htaccess
Не сложней предыдущего варианта:
Redirect /page1.html http://www.example.com/page2.html
То есть просто откуда и куда. После слова Redirect можно указывать статус перенаправления, наиболее часто используется 301, полный список можно легко найти в интернете.
Redirect 301 /page2.html http://www.example.com/page3.html
mod_rewrite .htaccess redirect
Этот способ может использоваться и для статических, и для динамических страниц. Например, редирект на имя сайта с префиксом www:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
</IfModule>
То же самое наоборот, когда ссылки сайта www.example.com переадрессовываются на такие же ссылки сайта example.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
</IfModule>
Впрочем, на самом деле оба эти варианта будут перенаправлять ссылки всех сайтов, которые не соответствуют необходимому.
nginx
Примерно то же самое, но для веб-сервера nginx, который не умеет работать с файлами .htaccess, для него редирект должен вписываться непосредственно в конфигурацию нужного сайта
if ($host != "example.com" ) {
rewrite ^/(.*)$ http://example.com/$1 permanent;
}
Список будет дополняться по мере обнаружения новых полезных способов.