Как самостоятельно настроить 301 редирект для вашего сайта…

Здравствуйте, уважаемые читатели блога WebMacter.ru. Постоянная переадресация (Permanent Redirect 301) служит механизмом для обеспечения постоянного переноса пользователей с устаревшего URL-адреса или домена на обновленный рабочий вариант. Она находит применение в ситуациях, связанных с полным переездом веб-ресурса на новое доменное имя, изменением структуры URL отдельных страниц, их удалением либо оптимизацией внутренней и внешней перелинковки.

301 редирект

Примером использования 301 редиректа может служить объединение трафика с различных доменов, зарегистрированных в разных зонах, на единый приоритетный адрес. Правильная настройка Permanent Redirect способствует сохранению позиции сайта в результатах поиска и предотвращает потерю накопленного ссылочного веса.

Способы реализации кода HTTP 301

Существуют различные подходы к внедрению кода 301:

  • Использование языка разметки HTML и серверного программирования (PHP).
  • Применение панелей управления и специализированных плагинов для систем управления контентом (CMS).
  • Настройка через специальные программные скрипты.
  • Управление на стороне хостинга.
  • Редактирование конфигурационных файлов сервера (.htaccess для Apache или web.config для IIS).

Последний метод считается самым доступным и эффективным…

Другие виды переадресации

Помимо постоянной переадресации существуют и другие типы редиректов:

  • Редирект 302: Временная переадресация, применяемая для временного перенаправления с одного URL на другой. Поисковые системы продолжают индексировать все доступные версии страницы, не объединяя ссылочный вес между ними.
  • 307 Temporary Redirect: Рекомендуется использовать исключительно в редких случаях, таких как временное техническое обслуживание сайта.
  • Meta Refresh: Переадресация выполняется на уровне самого сайта, а не сервера. Пользователю приходится ждать определенное время перед переходом на новую страницу, что негативно сказывается на пользовательском опыте и позициях в поисковой выдаче.
  • rel=»canonical»: Используется для указания поисковикам на предпочтительную страницу среди дубликатов, позволяя избежать проблемы двойных версий контента.

Когда лучше всего использовать постоянную переадресацию 301?

Практика показывает, что 301 редирект чаще оказывается оптимальным выбором по сравнению с временными решениями. К примеру, если сайт меняет доменную зону и переходит на защищенный протокол HTTPS, временная переадресация приведет к появлению в индексе сразу трех версий сайта, каждая из которых будет занимать свои позиции в выдаче. Постоянный редирект помогает объединить эти дубликаты и вернуть сайт на прежние позиции.

Однако следует избегать использования 301 переадресаций в тех случаях, когда требуется временно перенести сайт или устранить серьезные проблемы с текущим доменом.

Основные случаи применения Permanent Redirect 301

  • Полная смена доменного имени сайта, например, все без исключения запросы к old_your.ru перенаправляются на new_your.ru.
  • Изменение структуры URL отдельных страниц для улучшения SEO или адаптации к новой системе управления сайтом, когда настраивается перенаправление с your.ru/1fdkl5 на your.ru/ample.
  • Перенос разделов сайта на отдельные субдомены, когда нужно сменить адрес www.your.ru/ample на ample.your.ru.
  • Концентрация трафика с различных доменов на одном основном ресурсе.
  • Исключение дублирующих страниц из индексации.
  • Склеивание зеркал сайта, то есть устранение различных вариантов написания одного и того же адреса с www и без, с http и https. А также варианты сайта с одним и тем же контентом, но с разными адресами, например, your.ru, www.your.ru, https://your1.ru.
  • Удалили страницу и пользователи попадают на страницу с ошибкой 404. Большое количество таких страниц не любят пользователи и поисковики.
  • Для перехода пользователя на мобильную версию сайта с телефонов и планшет.

Использование 301 редиректа в файле .htaccess

В случае работы с веб-сервером Apache для выполнения перенаправлении может использоваться файл .htaccess. Однако перед этим важно убедиться, что включены соответствующие модули mod_alias (для директив Redirect, RedirectPermanent и RedirectMatch) и, или mod_rewrite (если требуется использование механизма переписывания URL).

Редирект через директиву Redirect или RedirectPermanent

Пример применения директивы Redirect 301:

Redirect 301 /old-page.html http://news-url.ru/news-page.html

Пример перенаправления через RedirectPermanent:

RedirectPermanent /old-page.html http://news-url.ru/news-page.html

В этом примере /old-page.html – это старая страница, а http://news-domin.ru/news-page.html – новая, куда осуществляется перенаправление. Недостаток этого метода заключается в том, что каждая страница требует отдельного указания. И также работает директива RedirectPermanent.

Применение RedirectMatch

Эта директива позволяет использовать регулярные выражения для обработки множества «старых» URL-адресов одновременно.

Например, при переходе с PHP на ASP можно настроить следующее перенаправление:

RedirectMatch /(.*).php$ /$1.aspx

Другой способ (mod_alias, RedirectMatch):

RedirectMatch 301 ^(.*)$ http://www.news-url.ru.ru/ 

Перенаправление с использованием 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.news-url.ru$ [NC]
RewriteRule ^(.*)$ http://news-url.ru/$1 [R=301,L]

Перенаправление с версии без www на версию с www:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^news-url.ru$ [NC]
RewriteRule ^(.*)$ http://www.news-url.ru/$1 [R=301,L]

Другой вариант:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.(.) [NC] 
RewriteRule ^(.)$ http://www.%1/$1 [R=301,L]

В итоге, файл .htaccess открывает широкие возможности для настройки перенаправлении 301 редиректов в различных ситуациях. Это позволяет гибко управлять перемещением пользователей на нужные страницы.

Редирект с использованием скрипта (отправки заголовков)

Скрипты могут применяться для осуществления редиректов путем отправки соответствующих заголовков браузеру клиента.

Далее смотрите примеры стандартных заголовков для реализации 301-го редиректа…

PHP-реализация

В PHP редирект осуществляется так:

Способ 1:

<?php 
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: http://www.news-url.ru"); 
exit(); 
?>

Способ 2:

<?php 
header("Location: http://www.news-url.ru", true, 301); 
exit(); 
?>

В основном PHP редирект используют, когда возникают проблемы с .htaccess либо функция на php более логичная и понятная.

В этих строках браузеру пользователя сообщается о необходимости постоянного перенаправления с запрашиваемой страницы на адрес http://news-url.ru. При этом http://news-url.ru может быть не только адресом главной страницы текущего сайта, но и любым другим.

В случае возникновения ошибки в окне браузера появится сообщение «Redirect».

ASP-реализация

На стороне ASP:

<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "www.news-url.ru"
response.end
%>

ASP.NET-реализация

В ASP.NET используется такой подход:

Способ 1:

<script runat="server">
private void Page_Load(object sender, System.EventArgs e) {
    Response.Status = "301 Moved Permanently";
    Response.AddHeader("Location","www.news-url.ru");
}
</script>

Способ 2 (с версии 4,0):

RedirectPermanent("http://www.news-url.ru");

ColdFusion-реализация

В ColdFusion применяется следующая конструкция:

<.cfheader statuscode=“301” statustext=“Moved permanently”>
<.cfheader name=“Location” value=“http://www.news-url.ru”>

JSP (Java)-реализация

<%
response.setStatus(301);
response.setHeader( “Location”, “http://www.news-url.ru/” );
response.setHeader( “Connection”, “close” );
%>

CGI PERL

На Perl скрипт выглядит так:

Способ 1:

$q = new CGI;
print $q->redirect(“http://www.news-url.ru/”);

Способ 2:

#!/usr/bin/perl -w
use strict;
print "Status: 301 Moved Permanently\n";
print "Location: http://www.news-url.ru/\n\n";
exit;

Ruby on Rails

В Ruby on Rails редирект реализуется следующим образом:

def old_action
headers[“Status”] = “301 Moved Permanently”
redirect_to “http://www.news-url.ru/”
end

Осуществление редиректа в Nginx

Наконец, в конфигурационном файле Nginx можно задать следующие правила для редиректора.

Редирект для домена www.news-domin.ru на news-domin.ru:

server {
listen 80;
server_name www.news-domin.ru;
rewrite ^ http://news-domin.ru$request_uri? permanent;
}

Редирект для домена с news-domin.ru на www.news-domin.ru:

server {
listen 80;
server_name news-domin.ru;
rewrite ^ http://www.news-domin.ru$request_uri? permanent;
}

Редирект с адреса http://news-domin.ru/index.php на http://news-domin.ru/:

location = /index.php {
if ($request_uri = /index.php) {
rewrite ^ http://$host? permanent;#301 redirect
}
fastcgi_pass unix:/tmp/fastcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

Нужно хорошо разбираться в настройках конфигурационных файлов для nginx и поэтому, если у вас возникли вопросы, обращайтесь за помощью к специалистам…

Есть еще много способов реализации перенаправления на разных языках программирования, таких как ASP, Ruby on Rails и т.д.

Еще используют метатег meta refresh или перенаправление на JavaScript. Но это методы, которые часто используются недобросовестными «веб-мастерами». Поисковые системы не понимают такие перенаправления, они получают на них ответ от сервера с кодом 200 ок.

Далее проверьте код ответа сервера, скорость загрузки HTML и дубли…

Инструмент проверки кода ответа сервера, и статуса HTTP вашего сайта онлайн: https://pr-cy.ru/headers/

Инструмент проверки сайта на дубли онлайн: https://liftweb.ru/duplicates

Заключительная часть

Метод внедрения 301 редиректа определяется особенностями используемого вами сервера и уровнем ваших технологических познаний. К примеру, файл .htaccess оптимален для серверов Apache, тогда как web.config будет полезен владельцам сайтов на базе IIS.

Если же требуется создать более сложные схемы перенаправления, то лучшим решением станет использование PHP. Соответственно, корректное применение редиректов 301 позволит вам обеспечить порядок на вашем ресурсе, улучшить его индексирование и сделать навигацию максимально удобной для посетителей.

Эти примеры демонстрируют различные способы выполнения 301 редиректа на разных платформах и языках программирования, обеспечивая гибкость и возможность выбора подходящего решения под конкретные нужды проекта.

Удачи вам и всего хорошего! До скорых встреч на страницах блога WebMacter.ru.

Читайте также:

Редактирование файла htaccess и переход с HTTP на HTTPS