Настройка правил перенаправления
В данной статье представлены примеры стандартных перенаправлений, которые могут быть настроены с использованием файла .htaccess на вашем веб-сайте.
Указанные перенаправления будут работать в следующих случаях:
- Для большинства конфигураций VDS, где используется веб-сервер Apache (необходимо, чтобы модуль mod_rewrite был включен);
- Для серверов с VestaCP или ISPmanager, установленными через панель управления аккаунтом. В 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]
Перенаправление с 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 ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
Перенаправление домена без www на домен с www
Примеры редиректов с forum.example.ru на www.forum.example.ru.
Способ 1:
RewriteCond %{HTTP_HOST} ^forum\.example\.ru$ [NC]
RewriteRule ^(.*)$ https://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 ^(.*)$ https://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]