ГлавнаяБлогБитрикс ЧПУ, правила urlrewrite.php

Битрикс ЧПУ, правила urlrewrite.php

Рамиль Юналиев
Рамиль Юналиев
E-Commerce Lead
3 декабря 2016 г.
1 мин чтения

Самые частые правила ЧПУ в Битриксе — страницы детального описания элементов вида /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 поглощается отдельной группой и не попадает в идентификатор.