Page tree

В статье приведены примеры стандартных перенаправлений, которые могут быть настроены с помощью файла .htaccess вашего сайта.

Указанные перенаправления будут работать:

  • для большинства конфигураций VDS, где используется веб-сервер Apache (необходимо, чтобы модуль mod_rewrite был включен);
  • для серверов с VestaCP или ISPmanager, установленными через панель управления аккаунтом.

Обратите внимание, что данные редиректы не подойдут для OS Bitrix7.

Директивы необходимо указывать в .htaccess в блоке <IfModule mod_rewrite.c> со следующим содержимым:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
#Ваши правила
</IfModule>

В качестве правил указываются директивы RewriteCond и RewriteRule с необходимыми значениями - RewriteCond задает условие, при котором происходит выполнение правила, указанного в RewriteRule.

Перенаправление на другой домен

В примере ниже выполняется редирект с www.old-domain.ru на www.new-domain.ru:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.ru$
RewriteRule ^(.*)$ http://www.new-domain.ru/$1 [R=301,L]

Наверх

Перенаправление домена без www на домен с www

В примерах осуществляется редирект с forum.example.ru на www.forum.example.ru.

Способ 1:

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

Способ 2, без указания домена:

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

Наверх

Перенаправление домена с www на домен без www

В примерах осуществляется перенаправление с www.forum.example.ru на forum.example.ru.

Способ 1:

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

Способ 2.

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

Наверх

Перенаправление в подкаталог

Перенаправление поддомена forum.example.ru в подкаталог forum:

RewriteBase / 
RewriteCond %{HTTP_HOST} ^forum\.example\.ru$ 
RewriteCond %{REQUEST_URI} !/forum/ 
RewriteRule ^(.*)$ /forum/$1 [L]

Наверх

Перенаправление c http на https

1. Перенаправление с http://example.ru на https://example.ru.

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

1a. Для серверов с панелью VestaCP:

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

1b. Для серверов с панелью ISPmanager при использовании Nginx:

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

2. Перенаправление с http://example.ru на https://www.example.ru.

RewriteBase /
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^example.ru$
RewriteRule ^(.*)$ https://www.example.ru/$1 [R=301,L]

3. Перенаправление с http://www.forum.example.ru на https://forum.example.ru.

RewriteCond %{HTTP_HOST} ^www\.forum\.example\.ru$ [NC]
RewriteRule ^(.*)$ https://forum.example.ru/$1 [R=301,L]
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

4. Перенаправление с http://forum.example.ru на https://www.forum.example.ru.

RewriteCond %{HTTP_HOST} ^forum\.example\.ru$ [NC]
RewriteRule ^(.*)$ https://www.forum.example.ru/$1 [R=301,L]
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Наверх

Перенаправление с https на http

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

Наверх

Перенаправление на http для одной страницы

Вариант 1:

RewriteBase /
RewriteCond %{HTTPS} on [NC]
RewriteCond %{REQUEST_URI} ^/Необходимая директория_страница$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Вариант 2:

RewriteBase /
RewriteCond %{HTTPS} !on
RewriteCond %{REQUEST_URI} !^/Необходимая директория_страница$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} on [NC]
RewriteCond %{REQUEST_URI} ^/Необходимая директория_страница$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Пример: отключение перенаправления на https для страницы bitrix/admin/1c_exchange.php для корректной работы обмена данных с 1C:

RewriteBase /
RewriteCond %{HTTPS} !on
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} on [NC]
RewriteCond %{REQUEST_URI} ^/bitrix/admin/1c_exchange\.php$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Оно же для панели VestaCP:

RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
 
RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{REQUEST_URI} ^/bitrix/admin/1c_exchange\.php$
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Наверх

Перенаправление на https для одной страницы

RewriteBase /
RewriteCond %{HTTPS} !on
RewriteCond %{REQUEST_URI} ^/Необходимая директория_страница$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Наверх

  • No labels