Редирект 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
<?php
header( “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