Самые частые правила ЧПУ в Битриксе — страницы детального описания элементов вида /section/125/.
По числовому ID:
array(
"CONDITION" => "#^/section/([0-9]+)/#",
"RULE" => "",
"ID" => "",
"PATH" => "/section/detail.php",
"SORT" => 100,
"PARAMS" => array("ELEMENT_ID" => "\$1")
),По символьному коду:
array(
"CONDITION" => "#^/section/([A-z]+)/#",
"RULE" => "",
"ID" => "",
"PATH" => "/section/detail.php",
"SORT" => 100,
"PARAMS" => array("ELEMENT_CODE" => "\$1")
),Проблема с query string: если URL содержит параметры (/section/125/?param=1), то $1 захватит 125/?param=1 — идентификатор сломается.
Правильное решение — добавить обработку query string в условие:
array(
"CONDITION" => "#^/section/([0-9]+)/(\\?(.*))#",
"RULE" => "",
"ID" => "",
"PATH" => "/section/detail.php",
"SORT" => 100,
"PARAMS" => array("ELEMENT_ID" => "\$1")
),Теперь ?param=1 поглощается отдельной группой и не попадает в идентификатор.
