Проблема сортировки правил в urlrewrite.php известна и достаточно жарко обсуждается в сообществе. Внесу свою лепту:
Известно, что правила в urlrewrite.php сортируются по убыванию длины условий. Необходимо поднять что-то вверх? Увеличь длину строки, дописав незначимых символов. Эти символы в программировании называются комментариями и в регулярных выражениях они есть. Как пользоваться:
При перестройки правил в админке или при добавлении компонента с ЧПУ порядок не нарушается, комментарии не удаляются, регулярное выражение с точки зрения компилятора не усложняется. Профит?
Данное решение использую уже не помню сколько лет.
P.S. Если данный финт нужно провернуть с правилами у которых есть ID (то есть с теми, которые прописывают сами компоненты), то сотрите его ("ID" => "",) и сделайте правило длиннее. Короткое создастся всё равно, но не будет срабатывать так как перекроется вышестоящим.
омг. я этого не знал :oа с какой версии это так? сайт обновил с 8й версии до 11й и заметил что ЧПУ начало косячить, но т.к. кондишины были корявонаписанныестолетназад переписал и все заработало. Раньше по порядку выполнялись?
Если я не ошибаюсь, то так было с незапамятных времён. Возможно, когда сайт был на 8-ой версии, с ним просто не выполнялось таких действий, которые приводили к перестройке urlrewrite.php или не было того функционала, который зависел от порядка выполнения правил?
Максим, прошу прощение, не могли бы Вы подробнее описать, в чем элементарность? Вижу разницу то, что все условие заключено в фигурные скобки... Что означает "(?#_________________________)" ?. Благодарю за ответ!
Кузнецова Ольга, элементарность в том, что Битрикс сортирует просто по длине регулярного выражения, а то, что вы процитировали - это комментарий внутри регулярки. Он не несет смысловой нагрузки, но позволяет обмануть ядро.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».