Настройка файла .htaccess для 1С-Битрикс
Чтобы избежать проблем с поисковыми системами для вашего сайта, после сдачи проекта на Битрикс, проверьте правильно ли сконфигурирован файл .htaccess. Это позволит избежать вам дублей страниц, сделать редирект с http на https и т.д.
Ниже покажу что я добавляю к стандартному файлу .htaccess для 1С-Битрикс в каждом проекте.
Весь код мы размещаем внутри секции <IfModule mod_rewrite.c>
ниже правил :
Options +FollowSymLinks
RewriteEngine On
Для того чтобы избежать дублей страниц, добавляем слеш в конце адресов. Теперь страницы не будут доступны по двум адресам site.ru/product и site.ru/product/ , будет только вариант с / на конце url.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)(?<!/)$ /$1/ [R=301,L]
Так же я всегда делаю переадресацию с домена с WWW на домен без WWW.
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Даже если в Битриксе включены ЧПУ, страницы все равно доступны с index.php на конце (site.ru/product/ и site.ru/product/index.php). Избавимся и от этого дублирования.
RewriteCond %{REQUEST_FILENAME} ^(.*)/index\.php$
RewriteRule ^(.*)index\.php(.*)$ /$1$2 [R=301,L]
И напоследок добавим переадресацию с http на https (на разных хостингах она может настраиваться по разному, в данном случае точно работает на reg.ru).
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Вот мой итоговый файл .htaccess для Bitrix:
Options -Indexes
ErrorDocument 404 /404.php
<IfModule mod_php5.c>
php_flag allow_call_time_pass_reference 1
php_flag session.use_trans_sid off
#php_value display_errors 1
#php_value mbstring.internal_encoding UTF-8
</IfModule>
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)(?<!/)$ /$1/ [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} ^(.*)/index\.php$
RewriteRule ^(.*)index\.php(.*)$ /$1$2 [R=301,L]
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [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>
<IfModule mod_dir.c>
DirectoryIndex index.php index.html
</IfModule>
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpeg "access plus 3 day"
ExpiresByType image/gif "access plus 3 day"
</IfModule>
p.s.
Когда тестировал переадресацию с http на https в инфоблоках, у меня постоянно шла переадресация на /bitrix/urlrewrite.php думал, что где-то неправильно настраиваю.
Проверил работоспособность переадресации в режиме Инкогнито, увидел что все работает, поэтому все тесты лучше всегда проводить в режиме Инкогнито.
Что это было и почему так, разбираться не хочу.