/ Настройка файла .htaccess для 1C Bitrix CMS

Настройка файла .htaccess для 1C Bitrix CMS

4 авг 2019
Дмитрий М.
27661

Где находится файл .htaccess в 1С Битрикс

Так же как и в любой другой CMS файл .htaccess в 1С Битриксе находиться в корневой ( главной ) директории сайта. Есть нюанс - увидеть данный файл через Административный интерфейс в разделе Структура сайта - Файлы и папки
Если файл .htaccess отсутствует вовсе, тогда его необходимо создать вручную и разместить стандартное содержимое файла для Битрикс.

Работать с файлом .htaccess лучше не через Административный интерфейс, а при sftp/ftp подключении к сайту при помощи файлового менеджера например программы FileZilla.
4.jpg

Стандартное содержимое htaccess для 1С Битрикс 18 ( все редакции )

Options -Indexes 
ErrorDocument 404 /404.php


    php_flag session.use_trans_sid off
    #php_flag default_charset UTF-8
    #php_value display_errors 1


<IfModule mod_php7.c>
    php_flag session.use_trans_sid off
    #php_flag default_charset UTF-8
    #php_value display_errors 1
</IfModule>

<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]
    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"
    ExpiresByType image/png "access plus 3 day"
    ExpiresByType text/css "access plus 3 day"
    ExpiresByType application/javascript "access plus 3 day"  
</IfModule>
        

Настройка редиректов в 1С Битрикс


Настройка редиректа с www на без-www в 1С Битрикс

Если вы хотите, чтобы при обращении к вашему сайту по адресу www.ваш-сайт.ru срабатывало перенаправление на ваш-сайт.ru, нужно прописать в файл .htaccess внутри секции mod_rewrite.c следующее правило:

#редирект с www на без-www
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
        
Данное правило лучше размещать сразу же после конструкции:
Options +FollowSymLinks
RewriteEngine On
Это необходимо для того, чтобы корректно работали все правила обработки ЧПУ сайта

Настройка редиректа с http на https в 1С Битрикс

Если вы на сайте решили подключить SSL сертификат, то вам будет обходимо настроить редирект с версии сайта на обычном протоколе http на защищённый протокол https, в противном случаи вы получите дубли всех страниц сайта. Для настройки редиректа на https нужно добавить в htaccess следующий код:

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

Избавляемся от дублей index.php

По умолчанию в 1С Битрикс все страницы доступны как по их ЧПУ так и по адресам с index.php на конце. Т.е если ввести страницу https://ваш-сайт.ру/ и https://ваш-сайт.ру/index.php то по обоим адресам будет доступна одна и та-же страница. От таких дублей нужно избавляться. Для этого разместим в htaccess следующий код:

#убираем /index.php в конце алиаса
RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
RewriteCond %{THE_REQUEST} !bitrix/admin/
RewriteRule ^(.*)index\.php$ http://%{HTTP_HOST}/$1 [R=301,L]
        

Убираем повторяющиеся слэши в конце адреса

Чтобы убрать дублирующиеся слэши в конце url необходимо в htaccess разместить правило

RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
RewriteRule . %1/%2 [R=301,L]
        

Добавляем слэш / в конце url адресов

Чтобы страницы не были доступны по двум адресам https://ваш-сайт.ру/catalog и https://ваш-сайт.ру/catalog/ необходимо настроить редирект на один из вариантом. Настроим редирект на страницы со слэшем / для этого в htaccess разместим следующий код:

#редирект URL с без слеша на со слешем на конце адреса
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.*/[^/\.]+)$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
        

Настройка браузерного кэширование при помощи htaccess в 1С Битрикс

Чтобы снизить нагрузку на сервер и увеличить в целом производительность сайта, рекомендуется использовать браузерное кэширование ресурсов сайта: изображений, скриптов, файлов стилей. Для того чтобы включить кэширование необходимо в htaccess после блока mod_rewrite вставить следующий код:

<ifModule mod_deflate.c>
<IfModule mod_filter.c>
    AddOutputFilterByType DEFLATE text/plain text/html
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript
    AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml application/rss+xml
    AddOutputFilterByType DEFLATE application/json
    AddOutputFilterByType DEFLATE application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon
</ifModule>
</ifModule>

<ifModule mod_headers.c>
    #кэшировать html и htm файлы на один день
    <FilesMatch "\.(html|htm)$">
        Header set Cache-Control "max-age=43200"
    </FilesMatch>
    #кэшировать css, javascript и текстовые файлы на одну неделю
    <FilesMatch "\.(js|css|txt)$">
        Header set Cache-Control "max-age=604800"
    </FilesMatch>
    #кэшировать флэш и изображения на месяц
    <FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
    #отключить кэширование
    <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
        Header unset Cache-Control
    </FilesMatch>
</IfModule>
        

Итоговый правильный .htaccess для CMS 1С Битрикс

Options -Indexes 
ErrorDocument 404 /404.php

<IfModule mod_php5.c>
    php_flag session.use_trans_sid off
    #php_flag default_charset UTF-8
    #php_value display_errors 1
</IfModule>

<IfModule mod_php7.c>
    php_flag session.use_trans_sid off
    #php_flag default_charset UTF-8
    #php_value display_errors 1
</IfModule>

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /

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

    # редирект с www на без-www
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
    
    # убираем /index.php в конце алиаса
    RewriteRule ^(.*)index\.php$ $1 [R=301,L]

    # убираем дубли /
    RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
    RewriteRule . %1/%2 [R=301,L]

    # добавляем / в конце алиасов
    RewriteCond %{REQUEST_URI} ^(.*)/$
    RewriteRule .* - [L]

    RewriteCond %{ENV:REDIRECT_STATUS} 200
    RewriteRule .* - [L]
    
    RewriteCond %{REQUEST_METHOD} =GET
    RewriteCond %{REQUEST_URI} ^(.*)/index.php$
    RewriteRule ^(.*)$ %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>

<IfModule mod_dir.c>
    DirectoryIndex index.php index.html
</IfModule>

<IfModule mod_setenvif.c>
    SetEnv TZ Europe/Moscow
</IfModule>

<IfModule mod_deflate.c>
    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE text/plain text/html
        AddOutputFilterByType DEFLATE text/css
        AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript
        AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml application/rss+xml
        AddOutputFilterByType DEFLATE application/json
        AddOutputFilterByType DEFLATE application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon
    </IfModule>
</IfModule>

<IfModule mod_headers.c>
    #кэшировать html и htm файлы на один день
    <FilesMatch "\.(html|htm)$">
        Header set Cache-Control "max-age=43200"
    </FilesMatch>
    #кэшировать css, javascript и текстовые файлы на одну неделю
    <FilesMatch "\.(js|css|txt)$">
        Header set Cache-Control "max-age=604800"
    </FilesMatch>
    #кэшировать флэш и изображения на месяц
    <FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
    #отключить кэширование
    <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
        Header unset Cache-Control
    </FilesMatch>
</IfModule>
        

Статья была полезна? Поблагодарите автора.

Самые читаемые
#1С Битрикс, #Bitrix CMS, #.htaccess, #настройка редиректов
4 авг 2019
#bitrix:news, #сортировка, #фильтрация, #bitrix:catalog, #catalog.section, #news.list
16 дек 2020
#Хлебные крошки, #1С Битрикс, #Bitrix CMS, #bitrix:breadcrumbs, #component_epilog, #кэширование
1 окт 2018
#bitrix, #свойства элементов, #обработчик событий, #OnBeforeIBlockElementUpdate, #OnIBlockElementSetPropertyValues
21 июл 2020
#Bitrix CMS, #breadcrumb, #bitrix:breadcrumbs, #хлебные крошки, #настройка
13 фев 2019
#ресайз изображений, #1С Битрикс, #Bitrix CMS
3 мар 2019
#bitrix, #robots.txt, #sitemap.xml, #поддомены, #мультисайтовость
16 окт 2018
#bitrix, #bitrix:catalog.section, #скидки, #товары со скидкой, #страница скидок, #страница со скидками
4 окт 2018
#bitrix, #пользовательские свойства, #тип свойств, #привязка к элементам
27 ноя 2019