Как грамотно сделать 301 редирект
Мы видим 301 ошибку при обращении к адресу страницы, означает, что сайт был на постоянной основе перемещен на новый адрес, который указывается в HTTP заголовке(301 Permament Redirect). И живые пользователи, и поисковые боты будут перенаправляться по нужному адресу. В этом случае, 301 редирект, параметры типа PageRank и Тиц, а также вес страницы и ссылочный вес старого сайта перейдут новому URL.
Редирект с номером ошибки 301 будет наилучшим способом сберечь рейтинг вашего сайта в поисковиках при смене домена или CMS. В зависимости от вашего ПО 301 редирект можно осуществить несколькими способами.
301 редирект в .htaccess
Когда на сервере используется apache, редирект ссылок возможно выполнить, используя файл .htaccess. Когда применяется 301 редирект htaccess не нужно забывать про активацию модулей mod_alias (обеспечение работы директив Redirect, Redirect Permanent и Redirect Match) и/или mod_rewrite (для использования рерайта) в php.ini.
Редирект с помощью директивы Redirect или RedirectPermanent модуля mod_alias
Redirect 301 /old-page.html http://new-domain.ru/new-page.html
или
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
Существенным минусом данного способа будет тот факт, что все перенаправляемые адреса следует перечислять каждый отдельно по порядку. Здесь еще можно использовать Redirect Permanent.
RedirectPermanent /old-url.html http://new-site.ru/new-url.html
Редирект с помощью директивы RedirectMatch
Это подобный предыдущему редирект. Отличие лишь в том, что существует возможность задать регулярное выражение для «мертвых» адресов. Если вы собираетесь заменить старый PHP движок на новый с ASP, то можно сделать следующее:
RedirectMatch /(.*)\.php$ /$1.aspx
Редирект с помощью директивы RewriteRule модуля mod_rewrite
Чтобы использоватьRewriteRuleнужноубедиться, что в httpd.conf подключен модуль mod_rewrite, а также активирована опция FollowSymLinks. Применение рерайт модуля дает массу возможностей для редиректа страниц на новые адреса.
Перенаправление домена с www на не-www
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
или так:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
Редирект запросов с не-www на домен с www префиксом
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
или так
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
Редирект с помощью скрипта
Редирект можно осуществлять, отправляя клиенту необходимые заголовки с помощью специального скрипта.
HTTP/1.1 301 Moved Permanently
Location: http://www.newdomain.ru/newdir/newpage.htm
Редирект php
<?php
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: http://www.newdomain.ru/newdir/newpage.htm”);
exit();
?>
ASP редирект
<%@ Language=VBScript %>
<%
Response.Status=“301 Moved Permanently”
Response.AddHeader “Location”, “http://www.new-url.com”
response.end
%>
ASP.NET редирект
<script runat=“server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(“Location”,“http://www.new-url.com”);
}
</script>
ColdFusion редирект
<.cfheader statuscode=“301” statustext=“Moved permanently”>
<.cfheader name=“Location” value=“http://www.new-url.com”>
JSP (Java) редирект
<%
response.setStatus(301);
response.setHeader( “Location”, “http://www.new-url.com/” );
response.setHeader( “Connection”, “close” );
%>
CGI PERL
$q = new CGI;
print $q->redirect(“http://www.new-url.com/”);
Ruby on Rails
def old_action
headers[“Status”] = “301 Moved Permanently”
redirect_to “http://www.new-url.com/”
end
Осуществление редиректав nginx
if ($host = ‘www.domain.com’ ) {
rewrite ^(.*)$ http://domain.com$1 permanent;
}
P.S. Работа в Запорожье и вакансии – Тут.