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

  • 2019-08-04
  • Дмитрий М.
  • 3451

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

<h2>Где находится файл .htaccess в 1С Битрикс</h2> <p> Так же как и в любой другой CMS файл .htaccess в 1С Битриксе находиться в корневой ( главной ) директории сайта. Есть нюанс - увидеть данный файл через Административный интерфейс в разделе <b>Структура сайта</b> - <b>Файлы и папки</b><br> Если файл .htaccess отсутствует вовсе, тогда его необходимо создать вручную и разместить стандартное содержимое файла для Битрикс. </p> <blockquote class="bxhtmled-quote"> Работать с файлом .htaccess лучше не через Административный интерфейс, а при <b>sftp/ftp</b> подключении к сайту при помощи файлового менеджера например программы <b>FileZilla</b>. </blockquote> <h3>Стандартное содержимое htaccess для 1С Битрикс 18 ( все редакции )</h3> <pre class="line-numbers"><code class="language-php"><pre>Options -Indexes ErrorDocument 404 /404.php <span mod_php5.c=""> php_flag session.use_trans_sid off #php_flag default_charset UTF-8 #php_value display_errors 1 </span> &lt;IfModule mod_php7.c&gt; php_flag session.use_trans_sid off #php_flag default_charset UTF-8 #php_value display_errors 1 &lt;/IfModule&gt; &lt;IfModule mod_rewrite.c&gt; 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}] &lt;/IfModule&gt; &lt;IfModule mod_dir.c&gt; DirectoryIndex index.php index.html &lt;/IfModule&gt; &lt;IfModule mod_expires.c&gt; 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" &lt;/IfModule&gt;</pre></code> </pre> <h2>Настройка редиректов в 1С Битрикс</h2> <br> <h3>Настройка редиректа с www на без-www в 1С Битрикс</h3> <p> Если вы хотите, чтобы при обращении к вашему сайту по адресу <b><a href="http://www.ваш-сайт.ru">www.ваш-сайт.ru</a></b> срабатывало перенаправление на <b>ваш-сайт.ru</b>, нужно прописать в файл .htaccess внутри секции <b><i>mod_rewrite.c</i></b> следующее правило: </p> <pre class="line-numbers"><code class="language-php"><pre>#редирект с www на без-www RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L]</pre></code> </pre> <blockquote class="bxhtmled-quote"> Данное правило лучше размещать сразу же после конструкции:<br> <i>Options +FollowSymLinks</i><br> <i>RewriteEngine On</i><br> Это необходимо для того, чтобы корректно работали все правила обработки ЧПУ сайта </blockquote> <h3>Настройка редиректа с http на https в 1С Битрикс</h3> <p> Если вы на сайте решили подключить SSL сертификат, то вам будет обходимо настроить редирект с версии сайта на обычном протоколе http на защищённый протокол https, в противном случаи вы получите дубли всех страниц сайта. Для настройки редиректа на https нужно добавить в htaccess следующий код: </p> <pre class="line-numbers"><code class="language-php"><pre>#редирект с http на https RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]</pre></code> </pre> <h3>Избавляемся от дублей index.php</h3> <p> По умолчанию в 1С Битрикс все страницы доступны как по их ЧПУ так и по адресам с index.php на конце. Т.е если ввести страницу <a href="https://ваш-сайт.ру">https://ваш-сайт.ру</a>/ и <a href="https://ваш-сайт.ру/index.php">https://ваш-сайт.ру/index.php</a> то по обоим адресам будет доступна одна и та-же страница. От таких дублей нужно избавляться. Для этого разместим в htaccess следующий код: </p> <pre class="line-numbers"><code class="language-php">#убираем /index.php в конце алиаса #RewriteRule ^(.*)index\.php$ $1 [R=301,L] </code></pre> <h3>Убираем повторяющиеся слэши в конце адреса</h3> <p>Чтобы убрать дублирующиеся слэши в конце url необходимо в htaccess разместить правило</p> <pre class="line-numbers"><code class="language-php">RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$ RewriteRule . %1/%2 [R=301,L]</code></pre> <br> <h3>Добавляем слэш / в конце url адресов</h3> <p> Чтобы страницы не были доступны по двум адресам <a href="https://ваш-сайт.ру">https://ваш-сайт.ру</a>/catalog и <a href="https://ваш-сайт.ру/catalog/">https://ваш-сайт.ру/catalog/</a> необходимо настроить редирект на один из вариантом. Настроим редирект на страницы <b>со слэшем / </b>для этого в htaccess разместим следующий код: </p> <pre class="line-numbers"><code class="language-php">#добавляем / в конце алиасов 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]</code></pre> <br> <h3>Настройка браузерного кэширование при помощи htaccess в 1С Битрикс</h3> <p> Чтобы снизить нагрузку на сервер и увеличить в целом производительность сайта, рекомендуется использовать браузерное кэширование ресурсов сайта: изображений, скриптов, файлов стилей. Для того чтобы включить кэширование необходимо в htaccess после блока mod_rewrite вставить следующий код: </p> <pre class="line-numbers"><code class="language-php">&lt;ifModule mod_deflate.c&gt; &lt;IfModule mod_filter.c&gt; 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 &lt;/ifModule&gt; &lt;/ifModule&gt; &lt;ifModule mod_headers.c&gt; #кэшировать html и htm файлы на один день &lt;FilesMatch "\.(html|htm)$"&gt; Header set Cache-Control "max-age=43200" &lt;/FilesMatch&gt; #кэшировать css, javascript и текстовые файлы на одну неделю &lt;FilesMatch "\.(js|css|txt)$"&gt; Header set Cache-Control "max-age=604800" &lt;/FilesMatch&gt; #кэшировать флэш и изображения на месяц &lt;FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$"&gt; Header set Cache-Control "max-age=2592000" &lt;/FilesMatch&gt; #отключить кэширование &lt;FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$"&gt; Header unset Cache-Control &lt;/FilesMatch&gt; &lt;/IfModule&gt;</code></pre> <br> <h2>Итоговый правильный .htaccess для CMS 1С Битрикс</h2> <pre class="line-numbers"><code class="language-php"><span mod_expires.c="">Options -Indexes ErrorDocument 404 /404.php &lt;IfModule mod_php5.c&gt; php_flag session.use_trans_sid off #php_flag default_charset UTF-8 #php_value display_errors 1 &lt;/IfModule&gt; &lt;IfModule mod_php7.c&gt; php_flag session.use_trans_sid off #php_flag default_charset UTF-8 #php_value display_errors 1 &lt;/IfModule&gt; &lt;IfModule mod_rewrite.c&gt; Options +FollowSymLinks RewriteEngine On RewriteBase / # редирект с www на без-www RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] # редирект с http на https RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # убираем /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}] &lt;/IfModule&gt; &lt;IfModule mod_dir.c&gt; DirectoryIndex index.php index.html &lt;/IfModule&gt; &lt;IfModule mod_setenvif.c&gt; SetEnv TZ Europe/Moscow &lt;/IfModule&gt; &lt;</span>I<span mod_expires.c="">fModule mod_deflate.c&gt; &lt;IfModule mod_filter.c&gt; 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 &lt;/</span>I<span mod_expires.c="">fModule&gt; &lt;/</span>I<span mod_expires.c="">fModule&gt; &lt;</span>I<span mod_expires.c="">fModule mod_headers.c&gt; #кэшировать html и htm файлы на один день &lt;FilesMatch "\.(html|htm)$"&gt; Header set Cache-Control "max-age=43200" &lt;/FilesMatch&gt; #кэшировать css, javascript и текстовые файлы на одну неделю &lt;FilesMatch "\.(js|css|txt)$"&gt; Header set Cache-Control "max-age=604800" &lt;/FilesMatch&gt; #кэшировать флэш и изображения на месяц &lt;FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$"&gt; Header set Cache-Control "max-age=2592000" &lt;/FilesMatch&gt; #отключить кэширование &lt;FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$"&gt; Header unset Cache-Control &lt;/FilesMatch&gt; &lt;/IfModule&gt;</span></code></pre> <br>

16.09.2020 09:01:02

01-02-2017-htaccess.jpg

01-02-2017-htaccess.jpg

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

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

Одним из важных файлов, влияющих на настройку работы любой CMS является файл .htaccess.

.htaccess - это серверный файл, отвечающий за:

  • настройку уровней доступа к файлам и папкам сайта,
  • настройку правил формирования URL,
  • вывод сообщений об ошибке,
  • настройка кэширования файлов в Apache
  • настройку параметров сервера Apache

Рассмотрим необходимые настройки этого файла для сайта под управлением 1С Битрикс.

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

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

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

Стандартное содержимое 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 в конце алиаса
#RewriteRule ^(.*)index\.php$ $1 [R=301,L]

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

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

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

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

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

#добавляем / в конце алиасов
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]

Настройка браузерного кэширование при помощи 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 /

  # редирект с www на без-www
  RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
  RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
  
  # редирект с http на https
  RewriteCond %{HTTPS} off
  RewriteCond %{HTTP:X-Forwarded-Proto} !https
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  
  # убираем /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>



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

Возврат к списку

Другие статьи