02.05.2019

Правильный htaccess для 1С-Битрикс

Правильный htaccess для 1С-Битрикс

При установке 1С-Битрикс в корне сайта создается файл .htaccess, который предназначен, в том числе, для корректной работы ЧПУ. Но по-умолчанию он не удовлетворяет всем требованиям типового проекта. В этой статье поделимся полезным примером настройки файла .htaccess для 1С-Битрикс.

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

<IfModule mod_rewrite.c>
	Options +FollowSymLinks
	RewriteEngine On
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-l
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
	RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
</IfModule>

Именно эти строки отвечают за корректную работу ЧПУ 1С-Битрикс. Здесь и нужно вносить изменения, добавляя правила после строки RewriteEngine On.

1. Добавление / в конце для перенаправления страниц элементов инфоблока вида /catalog/element на /catalog/element/:

# Переадресация с добавлением / в конце
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)(?<!/)$ /$1/ [R=301,L]

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

# Переадресация с домена с WWW на домен без WWW
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

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

# Переадресация с домена без WWW на домен с WWW
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]

3. Структура 1С-Битрикс включает в себя статичные страницы index.php, что влечет за собой открытие таких страниц по адресу /page/ и /page/index.php, в итоге получаем дубли страниц на сайте. Чтобы этого избежать, добавляем:

# Переадресация с index.php на /
RewriteCond %{REQUEST_FILENAME} ^(.*)/index\.php$
RewriteRule ^(.*)index\.php(.*)$ /$1$2 [R=301,L]

4. Помимо этого можно добавить редирект на защищенный протокол https:

Вариант 1

# редирект на https://
RewriteCond %{HTTPS} =off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

Вариант 2

# редирект на https://
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Вариант 3

# редирект на https://
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Вариант 4

# редирект на https://
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Нам будет приятно

Поделитесь

Комментарии

Загрузка комментариев...