Самые часто используемые правила ЧПУ в битриксе это страницы детального описания элемента, например /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", )
Было полезно или интересно?