(.htaccess redirect - перенаправления)
Если Вы хотите узнать, как правильно организовать переадресацию или перенаправление с одного url на другой, что такое 301 редирект, то Вы просматриваете нужный материал.
К 301 редиректу (Permanent Redirect 301) прибегают в следующих случаях: при переносе страницы сайта, при смене домена, для склейки имени сайта с www и без него. Корректная переадресация важна для передачи Page Rank (PR) и сохранения поискового трафика вашего ресурса.
В интернете наиболее популярны два сервера: IIS и Apache, поэтому и рассмотрим соответственно ориентированные примеры для организации перенаправления с одного источника информации на другой.
Простой 301 редирект (для Apache указывается в файле .htaccess или httpd.conf )
Необходимо отметить, что данная настройка .htaccess редиректа - и соответсвенно конфигурационного файла Apache, одна из самых используемых в большинстве случаев. Однако необходимо отметить следующий факт, что в последенее время популярность набирает другой модуль сервера Apache - mod_rewrite.
Директива 301 .htaccess выполняет перенаправление посетителя, запрашивающего документ на другой URL или выполняет внешний редирект (сообщая браузеру о том, что необходимо загрузить другой URL ).
Рассмотрим синтаксис этой директивы: Redirect [status] URL-path URL
- status : это необязательное поле, которое определяет код возврата, здесь допустимыми являются четыре значения:
- permanent (301 — документ перемещен постоянно)
- temp (302 — документ перемещен временно)
- seeother (303 — смотрите другой)
- gone (410 — убран)
- URL - path : (адрес на сайте) локальная часть URL запрашиваемого документа.
- URL : URL куда должен быть выполнен редирект (абсолютный, а не относительный путь)
Пример редиректа:
Redirect doc/ http://orionXL.ru/index.php
Редирект 301 - модуль mod_rewrite (прописывается в файле .htaccess)
Модуль mod_rewrite входящий в состав Apache — это удивительный модуль, т.е. это интеллектуальный модуль, который предоставляет очень мощные средства для практически любых URL преобразований. С этим модулем Вы можете выполнять почти все возможные типы URL преобразований о которых Вы когда-либо могли мечтать. Однако, цена, которую необходимо заплатить — это понять его сложность, так как главный недостаток mod_rewrite, — это то, что с ним тяжело разобраться, понять и использовать новичку. И даже настоящие эксперты Apache могут найти новые аспекты, где им может помочь mod_rewrite.
Этот модуль включает в себя и основан на правилах механизм (синтаксический анализатор с применением регулярных выражений), который выполняет URL преобразования on fly (на лету). Mod_rewrite поддерживает большое количество правил и связанных с каждым из правил условий, реализуя по настоящему гибкий и мощный механизм управления URL. URL преобразования, которые необходимо выполнить, могут использовать разные источники данных, например переменные окружения, переменные сервера, время, HTTP заголовки и даже запросы к внешним базам данных в различных форматах, — для получения URL нужного Вам вида.
Рассмотрим задачу переадресации имени сайта с www и без него:
Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^orionXL\.ru RewriteRule ^(.*)$ http://www.orionXL.ru/$1 [R=permanent,L]
или альтернативный вариант записи:
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^orionXL\.ru$ [NC] RewriteRule ^(.*)$ http://www.orionXL.ru/$1 [R=301,L]
Обозначение [R=permanent] или [R=301,L] означает, что необходимо перенаправить клиента по другому адресу и отправить ему код статуса 301 (R=301) и сделать это правило последним (L).
Допустим Вы сменили один домен (имя сайта) на другой. То у Вас появляется задача информирования потенциальных посетителей о данной ситуации. Приведем пример - переадресация старого домена на новый:
Options +FollowSymLinks RewriteEngine on RewriteRule (.*) http://www.orionXL.ru/$1 [R=permanent,L]
Например, если необходимо чтобы вместо hello_world.htm загружался файл index.html, добавьте в .htaccess:
RewriteEngine on RewriteBase / RewriteRule ^hello_world.htm$ index.html [R=permanent]
К примеру, если необходимо заменить файлы с расширением .php на файлы с расширением .html:
RewriteEngine on RewriteBase / RewriteRule ^(.*)\.php$ $1.html [R=permanent]
Редирект 301 с помощью серверных скриптов - PHP (ASP,ruby,ColdFusion и др.)
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.orionXL.ru/newdir/newpage.htm"); exit(); ?>
Не забудьте, что до вызова функции php header, ничего не должно отображаться или выводиться (например, функциями echo или print). Поэтому старайтесь размещать этот код в начале php-скрипта. Ниже приведем более полный вариант php редиректа с сохранением передаваемой страницы и параметров вызова:
<? $ref=$_SERVER['QUERY_STRING']; if ($ref!='') $ref='?'.$ref; header('HTTP/1.1 301 Moved Permanently');// в заголовке устанавливается 301 редирект (перемещено навсегда) header('Location: http://orionXL.com/'.$ref); exit(); ?>
Если вы пропустите строчку header('HTTP/1.1 301 Moved Permanently'), то в заголовке вернется сообщение с кодом 302. Что означает буквально следующее, страница перемещена временно и через некоторое время она появится снова или не появится. Вставляйте всегда эти две строчки, когда необходимо организовать 301 редирект.
Другие способы 301 редиректа
Другие способы - с помощью JavaScript, meta refresh использовать не рекоммендуется, т.к. они не отвечают некоторым критериям - поисковики в частности либо игнорируют их, либо наказывают за их применение. Следовательно, когда Вы работаете над своим ресурсом, не забывайте о грамотном использовании перенаправления между страницами интернет ресурсов.