Перенаправления на веб-сайт
Эти перенаправления предполагают сервер Apache и работают в файле .htaccess. Он помещается в корень сайта и может быть перегружен в подкаталоги. Также могут использоваться команды PHP.
Перенаправление против переписывания URL-адреса
Надо отличать принцип перенаправления от принципа переписывания URL. Это две методы, близкие, но имеющие противоположный эффект:
Перенаправление: URL-адрес, указанный пользователем, перенаправляется на новую страницу. URL-адрес новой страницы отображается браузером.
Мы используем его для смены адреса. Новый URL должен быть проиндексирован поисковиками, а старый удален.
Переписывание: заданный пользователем URL-адрес незаметно заменяется сервером новым путем. Однако в браузере отображается URL-адрес, заданный пользователем .
Он используется для отделения видимого URL от реального пути и предоставления пользователям более удобных обозначений. Поисковые системы должны индексировать только видимый URL, а не путь на сервере.
Apache использует один и тот же модуль RewriteEngine в обоих случаях, но команда Перенаправить или параметр 301 изменяют отображаемый URL. Фактически сервер возвращает новый URL браузеру, который должен выполнить новый запрос.
Перенаправления должны быть помещены перед переписыванием в файл .htaccess.
Как добавить www
Как перенаправить http://example.fr на http://www.example.fr...
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.fr
RewriteRule (.*) http ://www.example.fr/$1 [R=301,L]
HTTP_HOST представляет домен, поэтому условие извлекает домен из URL и сравнивает его со строкой, начинающейся с example.fr.
И мы делаем перенаправление 301 на http://www.example.fr для всех адресов, начинающихся с example.fr.
Как вернуть ошибки 404 на страницу
Это может быть страница ошибок, так называемая страница 404 имени кода, возвращаемого, когда страница не найдена, или домашняя страница (более полезная).
RewriteEngine on
ErrorDocument 404 /index.php
Обратите внимание, что директива RewriteEngine, которая активирует перенаправления, помещается в начале файла .htaccess.
Перенаправить одно имя домена на другое
Для окончательного изменения имени домена новый домен example.com...
RewriteEngine on
Redirect 301 / http://www.example.com/
Все страницы будут перенаправлены на новые файлы с тем же именем, но на новый домен.
Для временного изменения был бы использован код 302.
С PHP:
Для перенаправления сайта на новое доменное имя можно использовать следующий код в файле index.php:
<?php
header("Status: 301 Moved Permanently");
header("Location:http://www.example.com/");
?>
Посетитель будет выглядеть так, как будто он ввел URL-адрес сайта назначения.
Для временного перенаправления в PHP это проще, так как это вариант по умолчанию, также нет необходимости уточнять статус:
<?php header("Location:http://www.example.com/"); ?>
Перенаправить домашнюю страницу на имя сайта
Мы хотим, чтобы такой URL-адрес, как http://www.example.com/index.html, перенаправлялся сервером на http://www.example.com/, чтобы роботы поисковых систем не увидели два разных URL-адреса там, где есть один.
В этом случае используется переменная REQUEST_URI среды PHP, указывающая, какая страница была запрошена сервером. Затем используется команда загрузки, как, например, ниже:
<?php
if(eregi('index.(html|php)', $_SERVER['REQUEST_URI']))
{
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.example.com/');
}
?>
С помощью функции eregi проверяется, что загруженная страница действительно index.php или index.html (или любое другое имя) и только в этом случае выполняется перенаправление.
Другое решение - переименовать домашнюю страницу, например, assueil.html, указать ее серверу следующей командой в .htaccess:
DirectoryIndex accueil.html
Перенаправление для перемещенной страницы
Поскольку страница перемещена в новый каталог или под новым именем (или и тем, и другим), эта директива должна быть передана серверу:
Redirect 301 /répertoire/page.html http://www.example.com/répertoire/page.html
Будь то на том же или другом сайте, имя сайта всегда включается в URL-адрес назначения, а не в источник.
Перенаправить весь каталог в один файл
Если ты хочешь удалить поддиректорию из Сети, ты можешь перенаправить ее в блок на домашней странице или другой странице с одной директивой:
RedirectMatch 301 ^/monsousrep/.*$ http://www.example.com/index.php
Каталог, который нужно удалить, называется «monsousrep», который должен быть заменен именем каталога, а также домена назначения и страницы.
Место назначения не должно содержаться в перенаправляемом каталоге, поскольку это приведет к бесконечному циклу.
С точки зрения ссылок такая операция является уголовно наказуемой. Лучше поместить страницу в «noindex», а не перенаправлять ее на другую страницу, когда содержимое отличается.
При выборе перенаправления, как всегда, нужно убедиться, что все ссылки, указывающие на перенаправленную страницу, обновлены. Ссылка на перенаправление на том же сайте штрафует.
Используйте Link Checker с параметрами -r-s-f, чтобы найти эти ссылки.
Подробнее о перенаправлениях в файле .htaccess читайте в руководстве Apache.