Не работают ЧПУ в битриксе: 3 причины

При разработке магазина на битриксе достаточно часто возникают сложности с настройкой ЧПУ на сайте. Не столь важно, в компоненте ли каталога, новостей, или же каких-либо иных. Казалось бы, настройка ЧПУ по документации битрикса достаточно тривиальна, и там не может что-то пойти не так. Однако, опыт автора настоящей статьи, и те форумы, куда автор обращался за решением, говорят об обратном. Проблема существует и достаточно актуальна.

Ниже представлены 3 самые распространенные причины того, почему могут не работать настройки ЧПУ в битриксе. Причем могут не работать ЧПУ для всех типов страниц компонента, или же только для детальных страниц. Итак, причины могут быть следующими:

  1. Неправильные настройки ЧПУ в настройках инфоблока и компонента
  2. Ошибки в urlrewrite.php
  3. Некорректные правила в .htaccess

Следует рассмотреть каждую причину детально.

1. Неправильные настройки ЧПУ в инфоблоке и компоненте

Данная причина является самой простой по своему характеру и самой легкой в исправлении. Собственно, диагностику корректности настройки ЧПУ на сайте нужно начать с этого шага. 

Подробное описание о том, как настроить ЧПУ для компонента можно найти в справке (учебных курсах) битрикса. Однако, в качестве примера, хотелось бы привести наиболее типичные настройки ЧПУ для каталога товаров в интернет-магазине:

Шаг А. Настройки ЧПУ в инфоблоке

На вкладке настроек инфоблока (“Контент” > “Инфоблоки” > “Типы инфоблоков” > Далее индивидуально) указываем: 

Шаг Б. Настройки ЧПУ в компоненте каталога

В настройках компонента, на вкладке “управление адресами страниц”, указываем:

Сохраняем изменения, сбрасываем кеш, проверяем результат. Если ЧПУ не работают, переходим к шагу 2. 

2. Проблемы с файлом urlrewrite.php

Говоря простыми словами, urlrewrite.php, лежащий в корне сайта — это файл, в котором содержатся правила, в которых сообщается серверу о том, как обрабатывать тот, или иной файл.

В самом деле, может быть несколько причин, почему правила, записанные в urlrewrite, могут работать некорректно: 

  • Нарушена очередность правил
  • Ошибка сохранения при перезаписи файла CMS
  • CMS, при сохранении настроек компонента перезаписала настройки, ранее внесенные в файл руками
  • Ошибки в путях, синтаксисе и т.д.

Но, зачастую, достаточно проверить правильность записи значений в файле. Например, для каталога из пункта 1, правило в urlrewrite.php выглядит следующим образом:

 11 => 
  array (
    'CONDITION' => '#^/catalog/#',
    'RULE' => '',
    'ID' => 'bitrix:catalog',
    'PATH' => '/catalog/index.php',
    'SORT' => 100,
  ),

В практике автора была ситуация, когда из-за какой-то внутренней ошибки CMS не сохранила правило обработки для каталога в файл и пришлось внести его руками. Соответственно, после добавления ЧПУ заработали и проблема была решена.

3. Некорректные правила в .htaccess

Данная причина встречается значительно реже, чем две предыдущие. В практике автора она возникала в одном случае — когда на сайте, ранее использовавшим какое-то тиражное решение для интернет-магазина, нужно было развернуть бекап битрикса с типовым шаблоном интернет-магазина. Собственно, при развертывании бекапа ЧПУ на сайте переставали работать, хотя на тестовом сервере с аналогичными настройками всё работало прекрасно. Единственным отличием между боевым сервером и тестовом, было то, что на боевом было развернуто тиражное решение. 

Проблема заключалась в том, что при развертывании бекапа, битрикс оставляет текущий файл .htaccess, а .htaccess из бекапа сохраняет как копию. Следовательно, для того, чтобы исправить данную проблему достаточно заменить данный файл. 

Ниже представлены базовые правила из .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]
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>

В заключение данной статьи стоит заметить, что, вероятно, это не все возможные проблемы, связанные с неработающими ЧПУ в битриксе, но точно самые распространенные.