Показать сообщение отдельно

  #5  
Старый 13.02.2010, 19:44
suser
Познающий
Регистрация: 30.12.2009
Сообщений: 38
С нами: 8612423

Репутация: 18
Post

301 редирект это наилучший метод сохранения ваших позиций в поисковых системах, когда вы переносите страницу или сайт. Код "301" интерпретируется как постоянное перемещение ("moved permanently").
Простой редирект (в файле .htaccess или httpd.conf для Apache):
PHP код:
Redirect 301 / http://www.you.com/new.htm 
где:
Redirect 301 - это инструкция, говорящая что страница перемещена
/ - означает, что все с верхнего уровня сайта, включая все подкаталоги, будет переадресовано
http://www.you.com/new.htm - новая страница или сайт (не забывайте поставить последний "/", если переадресация идет на сайт).

Чтобы переадресовать только страницу, сохранив PR старой страницы:
PHP код:
Redirect 301 /old/old.htm http://www.you.com/new.htm 
где:
/old/old.htm - путь и имя старой страницы

Аналогичный синтаксис для переадресации сайта:
PHP код:
RedirectPermanent / http://www.you.com/ 
Пример переадресации каталога:
PHP код:
RedirectPermanent /old-directory http://www.domain.com/new-directory/ 
Например, зашедших в test переадресуем на www.test.com, остальных на enter.test.com (порядок следования записей важен):
PHP код:
Redirect permanent /test    http://www.test.com/
Redirect permanent /        http://enter.test.com/ 
Примечание: для моих целей (изменение домена) хватило первого варианта простого 301 редиректа.
Использование mod_rewrite (прописывается в файле .htaccess):

Ставшая классической задача слияния имена сайта с www и без него, решается так:
PHP код:
Options +FollowSymLinks
RewriteEngine on
RewriteCond 
%{HTTP_HOST} ^yoursite\.com
RewriteRule 
^(.*)$ http://www.yoursite.com/$1 [R=permanent,L] . 
или альтернативный синтаксис:
PHP код:
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).

Редирект старого домена на новый:
PHP код:
Options +FollowSymLinks
RewriteEngine on
RewriteRule 
(.*) http://www.newdomain.com/$1 [R=301,L] 
Например, если необходимо чтобы вместо rewrite.htm загружался файл rewrite.html, добавьте в .htaccess:
PHP код:
RewriteEngine   on
RewriteBase     
/
RewriteRule     ^rewrite\.htm$  rewrite.html [R=permanent] 
Для замены всех .htm файлов .html файлами:
PHP код:
RewriteEngine  on
RewriteBase     
/
RewriteRule     ^(.*)\.htm$  $1.html [R=permanent] 
Редирект на PHP:
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();
?>
 
Ответить с цитированием