301 редирект — это способ постоянной переадресации, который сообщает поисковым системам и браузеру, что страница или сайт окончательно переехали на новый адрес. Такой инструмент необходим при смене домена, переходе с http на https, при объединении версий с www и без www, а также при удалении index.php или index.html с главной страницы. Чаще всего для настройки используется файл htaccess, где можно прописать редирект 301 для отдельных страниц или целого сайта. Если правильно настроить правила, то поисковики не будут индексировать дубли и весь ссылочный вес сохранится.
В этой статье Вы найдете:
- Как правильно сделать 301 редирект;
- Какие редиректы нужно в первую очередь сделать при SEO продвижении сайта;
- Какие из них чаще всего используются при технической поддержке сайта.
Важно начинать все переадресации после строки RewriteEngine On. Комментарии в файле htaccess указываются с помощью #.
#Это будет считаться комментарием.
Самые важные редиректы для SEO
Ключевые правила — это 301 редирект сайта с разных версий домена и протоколов. Они обеспечивают корректную работу ресурса и помогают избежать дублей.
Переадресация домена без www на сайт с www
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Переадресация домена с www на сайт без www
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ https://www.%1/$1 [L,R=301]
301 редирект главной страницы сайта с index.php или index.html
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ https://domen.ru [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ https://domen.ru [R=301,L]
Редирект для папок со слешем в конце
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..{1,10}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domen.ru/$1/ [L,R=301]
Редирект для папок без слеша в конце
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ http://www.domen.ru/$1 [R=301,L]
301 редирект с http на https
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Удаление лишних слешей
RewriteCond %{THE_REQUEST} //
RewriteRule .* /$0 [R=301,L]
Популярные редиректы
В практике SEO часто требуется не только переезд всего сайта, но и настройка отдельных страниц. Ниже приведены самые востребованные примеры — как прописать 301 редирект в htaccess для страниц, папок и файлов.
Обычный 301 редирект страницы
Redirect 301 /o-kompanii.php https://domen.ru/o-kompanii/
301 редирект страницы через RewriteRule
RewriteCond %{REQUEST_URI} ^/about/statyi/elitnyj-remont-kvartiry-v-spb/$
RewriteRule ^.*$ https://domen.ru/elitnyj-remont-kvartir/ [R=301,L]
Редирект целой папки
RewriteRule ^papka-so-stranicami/(.*)$ https://domen.ru/novaia-papka/$1 [R=permanent,L]
301 редирект при смене расширения файлов
RedirectMatch 301 (.*)\.html$ https://www.domen.ru$1.php
Подмена адреса при работе с блогом
RewriteCond %{REQUEST_URI} !^/blog/index.php
RewriteRule ^blog/([^/]+).php/?$ blog/blog.php?url=$1 [L,QSA]
Страница ошибки 404
ErrorDocument 404 /404.php
Пример ЧПУ для старых страниц с параметрами
RewriteCond %{QUERY_STRING} ^task=detail&id_object=([0-9]+)&vector=([0-9]+)$
RewriteRule ^component/realty/$ /object/%1? [R=301]
Скрытие GET параметров в URL
RewriteRule (.*) $1? [R=301,L]
Эти правила помогают установить 301 редирект в htaccess не только для отдельных адресов, но и для целых разделов сайта. Это особенно важно при переезде или реструктуризации.
Готовые шаблоны выражений
. — Точка заменяет произвольный символ.
[abc] — обозначает перечень символов, совпадающих с буквами a, b, или c.
[^abc] — перечень символов, которые не входят в указанный диапазон.
* — означает, что предшествующий символ может повторяться (0 или более раз).
.* — заменяет абсолютно любой набор символов.
^ — начало строки.
$ — конец строки.
\w — буква, цифра или подчёркивание _.
\d — заменяет любую цифру.
\D — заменяет любой символ, кроме цифры.
[0-9] — заменяет любую цифру.
[a-z] — буквы латиницы в нижнем регистре.
[A-Z] — буквы латиницы в верхнем регистре.
[a-zA-Z] — любая буква латиницы.
Синтаксис отдельных символов
- ^ — начало строки;
- $ — конец строки;
- ! — отрицание;
- . — точка, заменяет один любой символ;
- () — группировка;
- \ — экранирующий слеш;
- # — начало комментария.
Модификаторы позволяют расширять возможности шаблонов:
- ? — символ повторяется 0 или 1 раз;
- + — повторяется от 1 до 65536 раз;
- * — повторяется от 0 до 65536 раз.
Флаги добавляют опции к правилам:
- NC — отключает проверку регистра символов;
- R — делает редирект, чаще всего используется R=301 для постоянного перенаправления;
- L — указывает, что строка окончательная.
301 редирект — важный инструмент управления сайтом и SEO. С его помощью можно настроить корректную работу ресурса при смене домена, объединить разные версии сайта, прописать редирект 301 на главную или перенести проект на https. Грамотное использование htaccess позволяет сделать правильный редирект 301 без потери позиций и трафика. Такие изменения не только сохраняют видимость в поисковых системах, но и повышают доверие пользователей.