Эта статья поможет, если перед вами стоит задача сделать редирект для WWW зеркала сайта на CMS Bitrix и вы столкнулись с тем, что после настройки файла .htaccess переадресация идет на https://site.ru:80
301 редирект с домена без WWW на домен с WWW
Для этого редиректа в файле /home/bitrix/www/site.ru/.htaccess добавьте следующие настройки:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} http://%1/$1
RewriteRule ^(.*)$ ^www.(.*)$ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>
301 редирект с домена с WWW на домен без WWW
Для этого редиректа в файле /home/bitrix/www/site.ru/.htaccess добавьте следующие настройки:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>
Если переадресация идет на https://site.ru:80
Создаём файл .htsecure в корне сайта:
touch /home/bitrix/www/site.ru/.htsecure && chown bitrix.bitrix /home/bitrix/www/site.ru/.htsecure
Добавляем этот код в /home/bitrix/www/site.ru/bitrix/.settings.php в самом начале после строки <?php :
if (($pos = strpos($_SERVER['HTTP_HOST'], ':')) !== false)
{
$HTTP_HOST = $_SERVER['HTTP_HOST'] = substr($_SERVER['HTTP_HOST'],0,$pos);
}
$_SERVER["HTTPS"] = "On";
$_SERVER['SERVER_PORT'] = 443;
Примечание: для старого ядра эти настройки нужно поместить в файл dbconn.php
/home/bitrix/www/site.ru/bitrix/php_interface/dbconn.php
И не забывайте перезапустить nginx и httpd:
systemctl restart nginx && systemctl restart httpd