Redirect (редирект) 301

Редирект 301 (301 Permament Redirect) — тип ответа, возвращаемого сервером при обращении к конкретной странице, означающий, что эта страница была навсегда перемещена на новый адрес. Новый адрес указывается в HTTP-заголовке возвращаемого ответа. Область применения этого редиректа довольно широка — начиная от смены домена и переносе страницы сайта и заканчивая склейкой имени сайта с www и без него. 301-й редирект это наилучший метод сохранения позиций в поисковых системах, если вам нужно перенести страницу или сайт целиком.

При использовании 301-го редиректа, как посетители, так и поисковые роботы будут перенаправлены на указанный адрес. Также, новому адресу будут переданы все показатели и характеристики старого: тИЦ, PR, ссылочный вес и вес страницы. То есть произойдет полная склейка двух адресов.

Редирект 301 можно выполнить разными способами, в зависимости от используемого программного обеспечения.

301-й редирект в Apache с помощью .htaccess

Возможен только при использовании веб-сервера Apache. Для использования приведенных ниже методов редиректа, необходимо подключить к нему модули mod_alias и mod_rewrite. Первый — для использования директив Redirect, RedirectPermanent и RedirectMatch, второй — для RewriteRule.
Редирект с помощью Redirect и RedirectPermanent

Для редиректа единичных адресов вполне подойдут директивы Redirect и RedirectPermanent.

Redirect 301 /old.html http://new-domain.ru/new.htmlили
Redirect permanent /old.html http://new-domain.ru/new.htmlили
RedirectPermanent /old.html http://new-site.ru/new.html

Редирект с помощью RedirectMatch

В отличии от предыдущих директив, директива RedirectMatch подразумевает использование регулярных выражений для формирования правила переноса. Следующий код сделает возможным обращение к адресам с .php на конце, как к статичным HTML-страницам, оканчивающимся на .html.

RedirectMatch /(.*)\.html$ /$1.php

Редирект с помощью RewriteRule

Для работы этой директивы необходимо подключение модуля mod_rewrite. Следующий пример добавит ко всем адресам, не содержащим на конце слеш(«/»), этот самый слеш.

RewriteCond %{HTTP_HOST} ^www\.domain\.ru
RewriteRule (.*) http://domain.ru/$1/ [R=301,L]

301-й редирект в nginx

if ($host = 'www.domain.com' ) {
 rewrite ^(.*)$ http://domain.com$1 permanent;
 }

301-й редирект с помощью скриптов

Принцип действия любого скрипта прост: он заключается в отправке серверу, следующего заголовка:

HTTP/1.1 301 Moved Permanently
Location: http://domain.ru/new.htm

В Location прописывается новый адрес расположения страницы, с которой происходит редирект.

Примеры редиректов на различных языках программирования:

ASP

<%@ Language=VBScript %>
<% Response.Status=“301 Moved Permanently” Response.AddHeader “Location”, “http://domain.ru/new.htm” response.end %>

ASP.NET

< script type=" text/javascript">// < ![CDATA[ private void Page_Load(object sender, System.EventArgs e) { Response.Status = “301 Moved Permanently”; Response.AddHeader( “Location”,“http://domain.ru/new.htm”); } // ]]>< /script>

ColdFusion

<.cfheader statuscode=“301” statustext=“Moved permanently”>
<.cfheader name=“Location” value=“http://domain.ru/new.htm”>

Javascript

<% response.setStatus(301); response.setHeader( “Location”, “http://domain.ru/new.htm” ); response.setHeader( “Connection”, “close” );  %>

Perl

$q = new CGI;
print $q->redirect(“http://domain.ru/new.htm”);

PHP

<?phpheader( “HTTP/1.1 301 Moved Permanently”);header( “Location: http://domain.ru/new.htm”); exit();  ?> 

Python/Django

from django import http
def view(request):
return http.HttpResponseRedirect('http://domain.ru/new.htm')

Ruby on Rails

def old_action
headers[“Status”] = “301 Moved Permanently”
redirect_to “http://domain.ru/new.htm”
end

Shell script

#!/bin/sh
echo "Content-type: text/html"
echo "Location: http://domain.ru/new.htm";
echo "";
exit 0;

источник полезных советов: seodict.ru

Опыт, HTTP