OrionXL

Редирект 301 – корректная переадресация. Редирект сайта с www на без www

Роман Иванов @ 11:36 08.12.2009

(.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 использовать не рекоммендуется, т.к. они не отвечают некоторым критериям - поисковики в частности либо игнорируют их, либо наказывают за их применение. Следовательно, когда Вы работаете над своим ресурсом, не забывайте о грамотном использовании перенаправления между страницами интернет ресурсов.

Комментариев нет

Комментариев нет.

RSS-лента комментариев к этой записи.

Извините, обсуждение на данный момент закрыто.

алгоритмы, методы, программы - OrionXL