Битрикс ЧПУ, правила urlrewrite.php
Самые часто используемые правила ЧПУ в битриксе это страницы детального описания элемента, например /section/125/ 125 это ID элемента, в основном это дополнительные разделы сайта, для магазинов используется комплексный компонент каталога и там 1 правило для всего компонента, но речь не о ней.
Для таких страницы правило выглядет так.
Если 1 числовой идентификатор:
array(
"CONDITION" => "#^/section/([0-9]+)/#",
"RULE" => "ELEMENT_ID=\$1",
"ID" => "",
"PATH" => "/section/detail.php",
)
Если символьный идентификатор:
array(
"CONDITION" => "#^/section/([A-z]+)/#",
"RULE" => "ELEMENT_CODE=\$1",
"ID" => "",
"PATH" => "/section/detail.php",
)
Если смешанный, состоящий как из цифр так и из символов:
array(
"CONDITION" => "#^/section/[A-z-0-9]+)/#",
"RULE" => "ELEMENT_CODE=\$1",
"ID" => "",
"PATH" => "/section/detail.php",
)
Но зачастую, особенно новички оставляют эти правильно как показано в примере, но если мы к этом адресу добавим параметры, то идентификатор ломается
/section/125/?param=1
в массиве $_GET вы получите не ELEMENT_ID = 125, а ELEMENT_ID = 125/?param=1, решением может быть функция intval($_GET[‘ELEMENT_ID’]), но правильным решением будет добавить в правило условие (\\?(.*))?#
В итоге, для простых страниц с ЧПУ нужно использовать правило:
array(
"CONDITION" => "#^/section/([0-9]+)/(\\?(.*))?#",
"RULE" => "ELEMENT_ID=\$1",
"ID" => "",
"PATH" => "/section/detail.php",
)