В этой статье Вы найдете:
- Как правильно сделать 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-адреса и строка считается окончательной.