Настройка перенаправлений
С помощью файла .htaccess сайта можно настроить перенаправления. В этой статье приведены часто используемые перенаправления. Для их работы необходимо иметь:
- стандартный VPS (или выделенный сервер) + Apache с включенным модулем mod_rewrite,
- стандартный VPS (или выделенный сервер) с установленной в автоматическом режиме панелью VestaCP или ISPmanager.
ВНИМАНИЕ! Описанные в статье перенаправления не подойдут для OS Bitrix7.
В ISPmanager для перенаправлений также можно использовать встроенные инструменты панели.
Перенаправления задаются в файле .htaccess в блоке <IfModule mod_rewrite.c>:
<IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine on #Правила </IfModule> |
Правила включают:
RewriteCond – условие,
RewriteRule – правило, т.е. действие, которое будет выполнено при выполнении условия.
Редирект на другой домен
Для того чтобы перенаправить с домена www.domain-1.com на www.domain-2.com, введите:
RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.)? domain-1\.com$ RewriteRule ^(.*)$ http://www.domain-2.com/$1 [R=301,L] |
Редирект c домена без www на домен с www
Для того чтобы перенаправить с домена domain.test.com на www.domain.test.com, введите:
Вариант 1, для определенного домена
RewriteCond %{HTTP_HOST} ^domain\.test\.com$ [NC] RewriteRule ^(.*)$ http://www.domain.test.com/$1 [R=301,L] |
Вариант 2, без указания какого-либо конкретного домена
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] |
Редирект с домена с www на домен без www
Для того чтобы перенаправить с домена www.domain.test.com на domain.test.com, введите:
Вариант 1
RewriteCond %{HTTP_HOST} ^www\.domain\.test\.com$ [NC] RewriteRule ^(.*)$ http://domain.test.com/$1 [R=301,L] |
Вариант 2
RewriteCond %{HTTP_HOST} !^domain\.test\.com$ [NC] RewriteRule ^(.*)$ http://domain.test.com/$1 [R=301,L] |
Редирект в подкаталог
Для того чтобы перенаправить с поддомена www.test.domain.com в подкаталог test, введите:
RewriteBase / RewriteCond %{HTTP_HOST} ^test\.domain\.com$ RewriteCond %{REQUEST_URI} !/test/ RewriteRule ^(.*)$ /test/$1 [L] |
Редирект c http на https
1. Для того чтобы перенаправить с http://domain-1.com на https://domain-1.com, введите:
RewriteBase / RewriteCond %{HTTPS} !on RewriteCond %{HTTP_HOST} ^domain-1.com$ RewriteRule ^(.*)$ https://domain-1.com/$1 [R=301,L] |
2. Для VPS (или выделенного сервера) с панелью VestaCP введите:
RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] |
3. Для VPS (или выделенного сервера) с панелью ISPmanager при использовании Nginx введите:
RewriteBase / RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] |
Редирект c http на https://www
Для того чтобы перенаправить с http://test.com на https://www.test.com, введите:
RewriteBase / RewriteCond %{HTTPS} !on RewriteCond %{HTTP_HOST} ^ test.com$ RewriteRule ^(.*)$ https://www.test.com /$1 [R=301,L] |
Для того чтобы перенаправить с http://test.example.com на https://www.test.example.com, введите:
RewriteCond %{HTTP_HOST} ^test\.example\.com$ [NC] RewriteRule ^(.*)$ https://www.test.example.com/$1 [R=301,L] RewriteBase / RewriteCond %{HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] |
Редирект c http://www на https
Для того чтобы перенаправить с http://www.test.example.com на https://test.example.com, введите:
RewriteCond %{HTTP_HOST} ^www\.test\.example\.com$ [NC] RewriteRule ^(.*)$ https://test.example.com/$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/user/1c_exchange.php для корректной работы обмена данных с 1C, введите:
RewriteBase / RewriteCond %{HTTPS} !on RewriteCond %{REQUEST_URI} !^/bitrix/user/1c_exchange\.php$ RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] RewriteCond %{HTTPS} on [NC] RewriteCond %{REQUEST_URI} ^/bitrix/user/1c_exchange\.php$ RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L] |
Чтобы отключить редирект на https для этой же страницы для панели VestaCP, введите:
RewriteCond %{SERVER_PORT} !^443$ RewriteCond %{REQUEST_URI} !^/bitrix/user/1c_exchange\.php$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
RewriteCond %{SERVER_PORT} ^443$ RewriteCond %{REQUEST_URI} ^/bitrix/user/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] |
Если у Вас остались вопросы - создайте тикет в техподдержку.