Home

Виталий Рудных

23 июня 2016

Как сделать 301 редирект?

301 редирект, он же 301 Permament Redirect (перемещен навсегда). Данный код редиректа означает что запрошенный ресурс был на постоянной основе перемещён в новое месторасположение. Более подробнее о нём можно почитать в rfc2616.

как делать 301 редирект

301 редирект на веб-сервере Apache

Если в качестве веб-сервера используется Apache, то можно сделать редирект через файл .htaccess, для этого в него необходимо добавить строчку:

Redirect 301 откуда_редиректить куда_редиректить

Например:

Redirect 301 https://dandare.ru/old-page/ https://dandare.ru/new-page/

Перенаправит посетителя сайт со страницы /old-page/ на страницу /new-page/. Это самый простой способ организовать 301 редирект, для работы директивы Redirect необходим установленный модуль mod_alias. Для более изощренных вариантов перенаправления, есть директива RewriteRule (модуль mod_rewrite), с его помощью уже можно использовать мои любимые регулярочки. Например, редирект с www на без-www реализованный через mod_rewrite:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.dandare\.ru$ [NC]
RewriteRule ^(.*)$ https://dandare.ru/$1 [R=301,L]

В данном примере, в случае перехода по адресу www.dandare.ru перейдет редирект на адрес dandare.ru без www. Разбирать mod_rewrite в этой статье я не буду, по нему можно целую книгу написать. Если есть вопросы, пишите в комментарии

301 редирект средствами PHP

PHP язык богов! Реализовать редирект на PHP, проще простого для этого достаточно передать заголовок с помощью функции header(), пример кода:

<?php
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: http://yandex.ru”);

При открытии файла с данным содержимым произойдет редирект на главную Яндекса. Для тех кому лень возиться с синтаксисом mod_rewrite и кто кроме PHP больше ничего не знает, может добавлять условия редиректа прям в пхп код, например текущий урл можно вытащить из массива $_SERVER, оттуда же и рефереры и прочие штуки.

301 редирект средствами nginx

Думаю, тут даже рассказывать нечего, если вы смогли сами установить nginx, то сделать редирект для вас как два пальца. Но, всё же, вот пример кода, для редиректа на nginx с www на без-www:

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

Данный кусок кода необходимо засунуть в секцию server{} файла nginx.conf (обычно расположен по пути /etc/nginx/ или /usr/local/etc/nginx) после чего перезагрузить nginx. Для этого выполнить команду:

service nginx restart

Либо:

/etc/init.d/nginx restart

На этом всё, ставьте лайки, подписывайтесь, оставляйте комментарии.

scribble