Что такое 301 редирект?
Редирект (redirect) — это автоматическое перенаправление (переадресация) пользователя с одной страницы сайта на другую страницу. Редирект может осуществляться в пределах одного домена, то есть, к примеру, с главной страницы на внутренние или с внутренних страниц на главную. Но чаще всего, происходит перенаправление (редирект) с домена на домен, то есть на другой сайт.
Цифра 301
означает код, который возвращает веб-сервер в ответ на запрос браузера, когда он запрашивает какую-либо страницу. Обычно, он отдает код 200
(OK) – страница существует, и она немедленно отображается в окне браузера. А вот 301
означает, что страница перемещена перманентно, то есть навсегда. В ответе сервера также указывается новое местоположение перемещенной страницы.
В каких случаях необходим серверный редирект?
В своей работе мне приходиться сталкиваться с типичной ситуацией: клиент создал новый сайт, под него арендовал новый домен с более красивым и коротким именем. Кстати, а вы читали статью как выбрать доменное имя правильно?
Затем он перенес туда весь контент со старого сайта. Что дальше? Дальше моя задача состоит в следующем: оставить в поиске только один новый сайт, а со старого перенести его «вес», со всем внешним ссылочным, тИЦ, PR, позициями и трафиком. То есть, попросту говоря, — «склеить» старый сайт с новым. Для этого и нужно сделать редирект.
Правильный редирект — он какой?
Вообще говоря, способов сделать и настроить редирект очень много. В этой статье я опишу только все наиболее простые и популярные методы. Вы можете выбрать подходящий именно вам способ сделать редирект для сайта (домена), а также для страниц (ссылок).
Я сознательно не буду упоминать варианты использования мета-тегов:
1 |
<meta http-equiv="refresh" content="0;URL=https://newdomain.com" /> |
Или скриптов JavaScript, так как такие операции могут быть приняты за попытку применить дорвей.
Самым правильным перенаправлением считается серверный редирект, когда браузеру и поисковому роботу отдается код 301
. Бывают еще редкие случаи употребления файла robots.txt
. Но я вам не рекомендую использовать его в этих целях. Всё-таки robots.txt предназначен для других задач.
Редирект через htaccess
Файл .htaccess
является единственным способом изменять настройки веб-сервера под нужды вебмастера. Это просто файл, размещаемый обычно в корне сайта, в котором прописываются директивы, управляющие поведением сервера.
Именно в файле .htaccess
предстоит разместить код, который будет перенаправлять пользователя на другую страницу и/или на другой домен. Скрипты редиректов, показанные ниже, необходимо размещать в этом файле. Он должен находиться в корневой папке сайта, и обязательно не забудьте поставить точку (.) перед именем файла.
Случай №1: изменение имени файла
Вы поменяли название файла old_file.html
на new_file.html
. Чтобы автоматически перенаправить посетителя с одного файла на другой, запишем в файле .htaccess следующую директиву:
1 |
redirect 301 /old_file.html https://www.example.com/new_file.html |
Случай №2: Замена расширения файла
Вы изменили расширение файла с file.html на file.php. В этом случае пишем:
1 |
redirect 301 /file.html https://www.example.com/file.php |
Как видите, код практически идентичен случаю №1.
Случай №3: Редирект с домена с www на домен без www
Самый, пожалуй, распространенный случай, когда необходимо «склеить» два домена: www.example.com
и example.com
. Если этого не сделать с самого начала, то может сложиться ситуация, когда поисковая система проиндексирует оба сайта (хотя физически это будет один и тот же сайт). Такого допускать ни в коем случае нельзя. Сразу определяйтесь какого вида домен вы хотите видеть в выдаче: с префиксом www
или без него.
Пример кода, когда хотите оставить домен без www:
1 2 3 |
RewriteEngine on RewriteCond %{HTTP_HOST} ^www.example.com RewriteRule ^(.*)$ https://example.com/$1 [R=301,L] |
Пример кода, когда хотите оставить домен c www:
1 2 3 |
RewriteEngine On RewriteCond %{HTTP_HOST} ^example.com RewriteRule (.*) https://www.example.com/$1 [R=301,L] |
Случай №4: Избавляемся от префикса index.php после слэш (/)
Если вам не нравится URL вида https://example.com/index.php
, то способ избавиться от префикса index.php следующий:
1 2 |
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ https://example.com/ [R=301,L] |
Соответственно, если расширение .html
, то меняем index.php на index.html
Здравствуйте! Статья выше всяких похвал – все очень доходчиво! Но хочу уточнить пару моментов. Мне нужно перевести небольшой сайтик, на сорок с лишним страниц, с файлового на движок. Естественно все урлы страниц меняются. Написать 40 строчек в.htaccess не сложно – сделаю. А, теперь главное. Редирект остается «пожизненно», или через какое-то (какое?) время его надо убирать? И если «пожизненно» то тогда может не исправлять все ссылки внутри сайта (меню, перелинковка и тд все возьмет на себя 301-й) или все-таки переписать? Спасибо!
Конечно, при редиректе «вес» старой страницы переносится на новый урл, так что можно оставить и так. На этом сайте, например, часть ссылок ведет на старые страницы, которых уже нет. Я перенаправил их на новые в .htaccess, при этом их «вес» нормально перешел на новые страницы. Так что можно ничего не менять.
А если сервер не apache? А допустим на 1gb.ru с поддержкой asp… то тогда как?
Отличная статья, полезная и грамотная. Спасибо.
я уже 3 месяца читтаю одно и тоже, но сделать ничего не смог. Помогите настроить стр. пример=
http://blogbit.net/web-development.html
на
http://blogbit.net
Я уже перепробовал все, но неполучается.
redirect 301 /web-development.html http://www.blogbit.net/index.php
или
redirect 301 /web-development.html http://www.blogbit.net/index.html
Подскажите пожалуйста ! Какой лучше применить редирект, нужно чтобы страница выскакивала при запросе в поисковике и заходя на нее, открывалась другая страница! И чтобы первая страница не теряла вес! Спасибо
Спасибо за информацию!!!!!