Продвигаем сайты услуг в самых конкурентных тематиках

Режим работы пн-пт:

c 09:00 до 20:00

Главная Блог Как сделать 301 редирект .htaccess. Настройк…

Как сделать 301 редирект .htaccess. Настройка переадресации страницы на сайте.


Как сделать 301 редирект .htaccess. Настройка переадресации страницы на сайте.
2021-01-07 Автор: Кудрявцев Сергей

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

В этой статье Вы найдете:

  • Как правильно сделать 301 редирект;
  • Какие редиректы нужно в первую очередь сделать при SEO продвижении сайта;
  • Какие из них чаще всего используются при технической поддержке сайта.

Важно начинать все переадресации после строки — RewriteEngine On

Комментарии в файле htaccess указываются с помощью #

#Это будет считаться комментарием.

Самые важные редиректы для SEO

Переадресация домена без 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]

Переадресация главной страницы сайта с 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]

Переезд с 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]

Популярные редиректы

Обычный 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]

Если Вы решили поменять расширения файлов

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

Если хотите сделать ЧПУ для старых страниц с параметрами

Предположим у Вас такой адрес — http://www.domen.ru/?option=com_content&view=article&id=33

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]

Вспомогательная информация для работы с файлом htaccess
Обычный SEO специалист будет пользоваться ими не часто, но для полноты документа напишем.
Чаще всего оптимизаторы пользуются готовыми решениями.

Готовые шаблоны выражений

. — Точка заменяет произвольный символ.
[abc] — обозначает перечень символов, совпадающих с буквами a, b, или с.
[^abc] — перечень символов, которые не входят в указанных диапазон. Совпадёт с любым символом, кроме a, b, или с.
* — означает, что предшествующий символ может повторяться (0 или более раз).
[abc]* — команда найдёт идущие подряд символы из заданного набора.
[^abc]* — с точностью до наоборот.
.* — заменяет абсолютно любой набор символов.
«.*» — найдёт все подстроки между кавычками.
^ — начало строки (в том случае, если используется в начале выражения).
$ — обозначает конец строки.

\w — буква, цифра или подчёркивание _.
\d — заменяет любую цифру.
\D — заменяет любой символ, но не цифру.
[0-9] — заменяет любую цифру.
[a-z] — любая буква от a до z (весь латинский набор символов) в нижнем регистре.
[A-Z] — любая буква от A до Z в ВЕРХНЕМ регистре.
[a-zA-Z] — любая буква от a до Z в любом регистре.
[a-Z] — то же самое.

Синтаксис отдельных символов

  • ^ — спецсимвол начала строки;
  • $ — спецсимвол конца строки;
  • ! — спецсимвол отрицания;
  • . — точка, заменяет любой символ, но только один;
  • () — группировка;
  • \ — «экранирующий» слеш, следующий символ после него считается обычным, а не спецсимволом;
  • # — начало текстового комментария в файле.

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

  • ? — символ повторяется 0 или 1 раз.
  • + — повторяется от 1 до 65536 раз.
  • * — повторяется от 0 до 65536 раз.

Флаги, задают доп. опции для используемого правила. Перечисляются в квадратных скобках через запятую, скажем [NC] или [R=301,L].

  • NC — флаг NoCase, отключающий проверку регистра символов при срабатывании правила.
  • R — флаг Redirect, производит процесс остановки изменения URL-адреса и возвращает результат. Чаще всего используется значение R=301, но возможны и другие для временных перенаправлений (302, MOVED TEMPORARY).
  • L — флаг Last, останавливает формирования URL-адреса и строка считается окончательной.
0