301 Permanent Redirect
301 Permanent Redirect використовується у кількох випадках: при зміні домену, при перенесенні сторінки сайту, для склеювання імені сайту з www та без нього. Це важливо для передачі Page Rank (PR) та збереження пошукового трафіку.
301 редирект це найкращий метод збереження ваших позицій у пошукових системах, коли ви переносите сторінку чи сайт. Код "301" інтерпретується як постійне переміщення ("moved permanently").
Простий редирект (у файлі .htaccess або httpd.conf для Apache):
Redirect 301 / http://www.you.com/new.htm
де:Redirect 301 - це інструкція, що говорить, що сторінку переміщено
/ - означає, що все з верхнього рівня сайту, включаючи всі підкаталоги, буде переадресовано
http://www.you.com/new.htm - нова сторінка або сайт (не забувайте поставити останній "/", якщо переадресація йде на сайт).Щоб переадресувати лише сторінку, зберігши PR старої сторінки:
Redirect 301 /old/old.htm http://www.you.com/new.htm
де:
/old/old.htm - шлях та ім'я старої сторінкиАналогічний синтаксис для переадресації сайту:
RedirectPermanent / http://www.you.com/Приклад переадресації каталогу:
RedirectPermanent /old-directory http://www.domain.com/new-directory/Наприклад, тих, що зайшли в test, переадресуємо на www.test.com, решту на enter.test.com (порядок слідування записів важливий):
Redirect permanent /test http://www.test.com/
Redirect permanent / http://enter.test.com/Примітка: для моїх цілей (зміна домену) вистачило першого варіанта простого 301 редиректу.
Використання mod_rewrite (прописується у файлі .htaccess):
Стало класичним завдання злиття імена сайту з www і без нього, вирішується так:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^yoursite\.com
RewriteRule ^(.*)$ http://www.yoursite.com/$1 [R=permanent,L] .або альтернативний синтаксис:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]Позначення [R=301,L] означає: перенаправити клієнта та надіслати йому код статусу 301 (R=301) і зробити це правило останнім (L).
Редирект старого домену на новий:
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]Наприклад, якщо необхідно, щоб замість rewrite.htm завантажувався файл rewrite.html, додайте в .htaccess:
RewriteEngine on
RewriteBase /
RewriteRule ^rewrite\.htm$ rewrite.html [R=permanent]Для заміни всіх .htm файлів .html файлами:
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)\.htm$ $1.html [R=permanent]Редирект на PHP:
<?php
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.newdomain.ru/newdir/newpage.htm');
exit();
?>Краще вказати HTTP/1.1, оскільки старіші не підтримують віртуальний хостинг. Не забудьте, що до виклику header нічого не повинно виводитися (наприклад, echo або print). Тому цей код краще ставити на початок php-скрипту. Більш повний варіант php редиректа зі збереженням сторінки, що передається, і параметрів виклику:
<?php
$ref=$_SERVER['QUERY_STRING'];
if ($ref) $ref='?'.$ref;
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://newdomain.com/'.$ref);
exit();
?>