Базовые 301 редиректы

08.05.2020

Подборка самых нужных и часто используемых редиректов для сайтов. Данные примеры должны подходить для большинства CMS.

Редиректы необходимо размещать в файле .htaccess после команды:

RewriteEngine On  

Несколько советов по использованию редиректов

Располагайте переадресации страниц в файле от частных к более глобальным (сверху вниз). Например: простая переадресация двух страниц стоит выше, чем глобальное правило редиректов с www на без www.

Избегайте последовательных редиректов (двух, трех и т.д.). Правила должны быть настроены так, что при возникновении редиректа он должен перенаправлять пользователя (робота) только один (!) раз. Каждое лишнее переадресация – это секунды драгоценного времени отдачи страницы, это нагрузка на сервер, это нечеткие команды для поисковых роботов.

Не забывайте, что многие браузеры кешируют (запоминают редиректы), поэтому проверять переадресации лучше на сайте –

http://www.bertal.ru

.

Примеры редиректов на все случаи жизни

301 редирект с одной страницы на другую

Redirect 301 /test-1/ http://site.ru/test-2/

или

RewriteCond %{REQUEST_URI} ^/test/$
RewriteRule ^.*$ http://site.ru/new-test/? [R=301,L]

301 редирект с www на без www и наоборот

Редирект с www

RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301] 

Редирект с без www на c www

RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]

* Тут нужно обратить внимане на каком протоколе находиться вашь сайт и по необходимости заменить http на https

301 редирект со страниц со слешем на без слеша (весь сайт)

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L] 

5. 301 редирект со страниц без слеша на слеш (часто в CMS системах устанавливается автоматически)

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteRule ^(.*[^\/])$ /$1/ [R=301,L] 

301 редирект для index.php, index.html или index.htm (например в Joomla), массовая склейка

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ 
RewriteRule ^(.*)index\.(php|html|htm)$ http://site.ru/$1 [R=301,L]

Каждая страница одного домена на такой же адрес другого url (Переезд сайта)

RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301] 

Редирект с протокола http на https.

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} =off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

Если возникает циклический редирект, то воспользуйтесь этим вариантом:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

или

RewriteCond %{ENV:HTTPS} !on 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Для Битрикс-сайтов на хостинге reg.ru

RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Для сертификатов https c Cloudflare:

RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
# Without Cloudflare:
# RewriteCond %{HTTPS} off 
RewriteRule ^ https://www.example.com%{REQUEST_URI} [NE,R=301,L]

Редирект с протокола https на http.

Обратный редирект, если перестали использовать SSL сертификат.

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

 

Преимущества продвижения сайта у нас

Каждый третий клиент приходит по рекомендации
Каждый третий клиент
приходит по рекомендации
7 лет успешной работы
7 лет успешной работы
на рынке интернет-маркетинга и web-разработки
Более 70 клиентов
Более 70 клиентов
знают, что такое эффективная раскрутка
Более 800 000 посетителей
Более 800 000 посетителей
приходят на сайты ежемесячно