Правила обработки адресов в bitrix

Грызем ЧПУ «Битрикс»: укус первый

Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.

Если послушать рядовых пользователей, то ЧПУ «Битрикс» непостижим, чужд и враждебен, как космос. Штука и впрямь непростая, даже сами разработчики CMS это признают. Но на следующем же абзаце они утверждают, что ЧПУ прекрасно работает, надо мол просто знать что, где и как подкрутить. Золотой совет! Вот давайте прямо сейчас и начнем разбираться.

Почему не работает правило обработки адресов?

1. Прежде всего проверьте, все ли значения правила записаны, например:

array(
«CONDITION» => «#^/index/([0-9]+)/([0-9]+)/#»,
«RULE» => «mode=read&CID=$1&GID=$2»,
«ID» => «bitrix:catalog.section»,
«PATH» => «/newforum/index.php»,
),

Здесь CONDITION – условие, RULE – правило, ID – компонент, PATH – путь до компонента

2. Затем проверьте, верно ли записаны правила.

Ищите ошибки в путях, синтаксические ошибки, неверно записанные условия и правила. Документацию и примеры смотрите по адресу

3. Далее проверьте очередность правил сверху вниз кода файла urlrewrite.php

Частное и реже используемое правило следует размещать выше, чем более общее и чаще используемое. Например, правило обработки адреса статьи раздела должно быть выше правила обработки адреса раздела, к которому относится статья. Устанавливайте правила через интерфейс административной панели Настройки > Настройки продукта > Обработка адресов, контролируйте правильность в файле urlrewrite.php

4. Проверьте настройки компонента и инфоблока.

А) Доступ к инфоблоку и к компоненту открыт?

Б) Права доступа к инфоблоку и к компоненту достаточны (чтение)?

В) Элемент существует?

Г) Номер элемента указан верно?

5. Не меняла ли CMS записи в файле urlrewrite.php?

При сохранении настроек комплексного компонента «Битрикс» обновляет правила и файл urlrewrite.php, в процессе выполняя сортировку правил. В результате сплошь и рядом нарушается порядок очередности и правила перестают работать.

Всегда имейте наготове резервную копию актуальной версии файла urlrewrite.php с верно записанными правилами. Выработайте автоматизм, как на Ctrl+S. Загрузить такой бэкап двухминутное дело, а восстанавливать правила по памяти куда как дольше.

Особо продвинутые программисты, впрочем, дают разные рекомендации по радикальному избавлению от этой напасти. Мы пока таких советов давать не готовы, сначала изучим вопрос и вернемся к нему в следующем разговоре про ЧПУ «Битрикс».

www.acrit-studio.ru

Администратор. Базовый

откликалась на адрес вида:

Создайте правило с параметрами:

  • Условие: #^/gospel/pericope/([0-9]+)/([0-9]+)/#
  • Файл: /gospel/pericope/index.php
  • Правило: ELEMENT_ID=$1&SECTION_ID=$2
  • Как можно вручную настроить ЧПУ, используя символьный код разделов инфоблока.

    Например, для ЧПУ-пути /some_sef_folder/section_code/ , где section_code — символьный код секции. ЧПУ-правило будет:

    В скрипте /real_script_path/index.php в настройках компонента параметру символьного кода секции нужно указывать $_REQUEST[‘SECTION_CODE’]

    Для ЧПУ-пути /some_sef_folder/section_code/element_id.php , где section_code — символьный код секции, а element_id — целочисленный код элемента. ЧПУ-правило будет:

    В скрипте /real_script_path/index.php компоненту нужно передавать $_REQUEST[‘SECTION_CODE’] и $_REQUEST[‘ELEMENT_ID’] соответственно.

    some_sef_folder — ЧПУ-путь, может не существовать реально на сервере.
    real_script_path — путь к реальному скрипту-обработичку на сайте, который будет генерировать результат.

  • Для случаев:
    1. Один из разделов каталога ( site.ru/каталог/название_раздела1/ ) выводить по адресу site.ru/другое_название_раздела1/
    2. Одну из статей ( site.ru/статьи/название_статьи1/ ) выводить по адресу site.ru/другое_название_статьи1/
    3. Один из подразделов ( site/раздел/подраздел/ ) выводить по адресу site.ru/новое_название/
    4. Одну из статей ( site.ru/раздел/статьи/название_статьи2/ ) выводить по адресу site.ru/другое_название_статьи2/

    Пример приведёт для первого случая, остальные варианты аналогичны.

    Пути вида: http://site.com/код раздела_код подраздела не обрабатываются этим правилом.

    Причина: знак минус в выражении [^-] воспринимается как служебный, обозначающий диапазон, а служебные символы нужно предварять знаком «\» , т.е. писать вместо минуса «\-» . Однако этого недостаточно если код подраздела состоит не только из символов, например: «1-xxxx», «2-xxxx».

    Причина в первом квантификаторе в первых круглых скобках, действие которого нужно ограничить знаком «?». Конечное условие: #^/(R.*?)\-(.*)/#

    для site.ru/cat/razdel/element/ откроет тоже самое, что и для site.ru/cat/razdel/

    Лучше сделать два правила. (Использование двух правил допускается системой).

  • Условие: #^/cat/([a-z0-9\_]+)/([a-zA-Z]<1>[a-zA-Z0-9]*)/\?(.*)?#
  • Файл: /cat/test.php
  • Правило: SECTION_CODE=$1&ELEMENT_CODE=$2&$3
  • Надо сократить урл. Например, вместо http://epic.tm/catalog/men/ выводить http://epic.tm/men/ .

    1) Создайте файл /catalog/list.php следующего вида:

    2) Добавьте правило в /urlrewrite.php:

    3) Откройте в браузере страницу http://epic.tm/men/ . Если у вас показывается страница /catalog/list.php , значит, всё сделано правильно. Разместите на этой странице вызов компонента bitrix:catalog.section и настройте компонент.

    4) Поправьте поле «URL страницы раздела» в настройках соответствующего инфоблока.

    Как настроить ЧПУ если используется catalog:sections и element:detail вместо комплексного компонента. Ссылки на разделы каталога должны иметь вид /catalog/section-name/ , а на товары /catalog/section-name/element-name/ .

    1) Создайте два правила:

    • Условие: #^/catalog/([\w,-]+)/([^/]*)#
    • Файл: /catalog/index.php (в этом файле у вас вызов компонента catalog.sections)
    • Правило: SECTION_CODE=$1
    • и

      • Условие: #^/catalog/([\w,-]+)/([\w,-]+)/([^/]*)#
      • Файл: /catalog/detail.php (в этом файле у вас вызов компонента element.detail)
      • Правило: SECTION_CODE=$1&ELEMENT_CODE=$2
      • 2) В настройках инфоблока каталога укажите:
        URL страницы раздела: #SITE_DIR#/catalog/#SECTION_CODE#/
        URL страницы детального просмотра: #SITE_DIR#/catalog/#SECTION_CODE#/#ELEMENT_CODE#/

        3) В настройках компонентов укажите:
        Код раздела: = <$_REQUEST["SECTION_CODE"]>(для компонента catalog.sections ) Код раздела: = <$_REQUEST["ELEMENT_CODE"]>(для компонента element.detail )

      • Обработка адресов поддерживает регулярные замены. Пример объединения трех правил (для трех языков) в одно:
        • Условие: #^/([de|ru|ua]+)/products/test/([0-9]+)(.*)#
        • Компонент:
        • Файл: /$1/products/test/index.php
        • Правило: SECTION_CODE=$2
        • Условие: #^/gallery/#
        • Файл: /max/images/index.php
        • Правило:

        и пользователем запрошена страница /gallery/38.php , которая физически не существует, то система обработки адресов подключит скрипт /max/images/index.php .

      • Условие: #^/index/([0-9]+)/([0-9]+)/#
      • Файл: /newforum/index.php
      • Правило: mode=read&CID=$1&GID=$2
      • и пользователем запрошена страница /index/5/48/ , то будет подключен скрипт /newforum/index.php?mode=read&CID=5&GID=48.

      • Если в системе обработки адресов зарегистрировано правило:
        • Условие: #(.+?)\\.html(.*)#
        • Файл:
        • Правило: $1.php$2
        • Настройка ЧПУ, правило обработки адресов

          Подскажите, что не так записано в поле Условие или Файл

          А обратную задачу как решить, подскажете?

          /index.php?option=com_virtuemart&page=shop.browse&category_id=350& и далее разные параметры.
          (обращения роботов по адресам от старой версии сайта )

          редирект на /old/350/index.php

          Условие: #^/index.php?option=com_virtuemart&page=shop.browse&category_id=([0-9]+)#
          Компонент:
          Файл: /old/
          Правило: $1/index.php

          не работает

          Что-то не нравятся мне вложенные скобки и двойной слеш в примере, пожалуй, переделаю по-другому
          Условие: #^/gospel/pericope/([0-9]+)/([0-9]+)/(\\?(.*))?#

          Так, наверное, лучше будет:
          #^/gospel/pericope/([0-9]+)/([0-9]+)/\?(.*)?#

          Алексей, для такого правила вам не нужно ничего добавлять, все параметры и так придут.
          Т.е.: #^/gospel/pericope/([0-9]+)/([0-9]+)/#
          вполне достаточно

          А вот если у вас ссылка такого шаблона /gospel/pericope/([0-9]+)/([0-9]+).php

          тогда вот такое правило должно быть:
          #^/gospel/pericope/([0-9]+)/([0-9]+)\.php.*#

          Или я не совсем понял вашу проблему?

          Я так понимаю, что им неоткуда прийти, если они не выделены в скобках и не пристыкованы через $3.

          Если я оставляю правило так: #^/gospel/pericope/([0-9]+)/([0-9]+)/#, а потом администратором зайду на страницу /gospel/pericope/545/208/, мне будет показана страница /gospel/pericope/?ELEMENT_ID=545&SECTION_ID=208, т.к. правило сработает.
          Но, если я, например, что-нибудь исправлю на странице и нажму кнопку Обновить кеш, то браузер отправит страницу с параметром /gospel/pericope/545/208/?clear_cache=Y, что вызывает ошибку (не найден раздел), я подозреваю, что из-за того, что ?clear_cache=Y теряется при формировании /gospel/pericope/?ELEMENT_ID=545&SECTION_ID=208&clear_cache=Y.
          Поэтому, я добавил последнюю третью скобку, чтобы все изначальные параметры не терять, а пристыковать в конце к ELEMENT_ID=545&SECTION_ID=208.

          Почему? Апач увидит тот REQUEST_URI, который его запросили и разберет его, он ничего не знает про ваше ЧПУ. Затем система urlrewrite битрикса разберет ваше правило, добавит в суперглобальные переменные ЧПУ-параметры и подправит $_SERVER[‘QUERY_STRING’].

          Для проверки на вашей ЧПУ-странице с обычным правилом сделайте echo ‘ ‘;
          добавляйте какие хотите дополнительные параметры — они все будут.

          P.S. А ошибку вызывает что-то другое.

          Ошибка, вроде ушла, когда я второй подряд ? добавил, т.е. сделалал первый ? необязательным, пока так оставляю:
          #^/gospel/pericope/([0-9]+)/([0-9]+)/\??(.*)?#

          Array ( [0] => Array (
          [clear_cache] => Y
          [ELEMENT_ID] => 493
          [SECTION_ID] => 141?clear_cache=Y )

          [1] => Array (
          [REDIRECT_QUERY_STRING] => clear_cache=Y
          [REDIRECT_STATUS] => 200
          [QUERY_STRING] => ELEMENT_ID=493&SECTION_ID=141?clear_cache=Y
          [REQUEST_URI] => /gospel/synopsis/infogram/493/141/?clear_cache=Y
          [SCRIPT_NAME] => /bitrix/urlrewrite.php
          [PHP_SELF] => /bitrix/urlrewrite.php
          [argv] => Array ([0] => clear_cache=Y)
          [argc] => 1
          [REAL_FILE_PATH] => /gospel/synopsis/infogram/index.php))

          Значит нет необходимости или еще очередь не дошла

          Вы вручную хотите ЧПУ-правила добавить?

          Тогда так.
          Например, для ЧПУ-пути «/some_sef_folder/section_code/»,
          где section_code — символьный код секции.
          ЧПУ-правило будет:

          Условие: #^/some_sef_folder/([0-9a-zA-Z_-]+)/.*#
          Правило: SECTION_CODE=$1
          Компонент:
          Файл: /real_script_path/index.php

          — в скрипте /real_script_path/index.php в компоненте параметру символьного кода секции нужно указывать $_REQUEST[‘SECTION_CODE’]

          Для ЧПУ-пути «/some_sef_folder/section_code/element_id.php»,
          где section_code — символьный код секции,
          а element_id — целочисленный код элемента.
          ЧПУ-правило будет:

          Условие: #^/some_sef_folder/([0-9a-zA-Z_-]+)/([0-9]+)\.php.*#
          Правило: SECTION_CODE=$1&ELEMENT_ID=$2
          Компонент:
          Файл: /real_script_path/index.php

          — в скрипте /real_script_path/index.php компоненту нужно передавать $_REQUEST[‘SECTION_CODE’] и $_REQUEST[‘ELEMENT_ID’] соответственно.

          some_sef_folder — ЧПУ-путь, может не существовать реально на сервере.
          real_script_path — путь к реальному скрипту-обработичку на сайте, который будет генерировать результат.

          dev.1c-bitrix.ru

          Битрикс.Правило обработки адресов?

          В Битриксе (пойдёт через апач и /urlrewrite.php):
          Административный раздел / Настройка / Настройки продукта / Обработка адресов / Правила обработки:

          Пример конфига ЧПУ через nginx:

          То есть вам прямо на бэкэнд будет приходить ваша ссылка
          www.site.ru/catalog/?brand=alcatel

          =)
          Именно благодаря введённому правилу урл
          www.site.ru/catalog/alcatel

          . обрабатывается как
          www.site.ru/catalog/?brand=alcatel

          . о чём свидетельствует переменная brand в массиве $_REQUEST:
          Array ( [brand] => alcatel )

          Он и не должен перенаправлять. Мы настроили ЧПУ.

          toster.ru

          Правила обработки адресов в bitrix

          Компания «Виталфарм» вышла на рынок автомобильных аксессуаров в 1999 году. Одно из направлений деятельности компании — производство товаров, которые помогают автолюбителям создать комфортную и безопасную атмосферу в своем автомобиле. Компания «Виталфарм» предлагает большой ассортимент автоаксессуаров, необходимых каждому автомобилисту, и, кроме того, различные сопутствующие товары. Это приятные дополнения к жизни водителя, обеспечивающие удобство участникам движения, чистоту и красоту автомобиля.

          Огромной популярностью у наших клиентов пользуются наборы автомобилиста. В каждый автонабор входит все необходимое для прохождения государственного техосмотра. Кроме того, дополнительные комплектующие набора автомобилиста могут помочь в непредвиденных ситуациях на дороге; любому водителю могут понадобиться те автоаксессуары, которые входят в состав автонабора.

          Главная составляющая любого набора автомобилиста — авто аптечка, значение которой сложно переоценить. Непредвиденные ситуации возникают спонтанно, и водителю автомобиля, как и его пассажирам, аптечка может понадобиться в любой момент. Автомобильные аптечки первой помощи производства компании «Виталфарм» соответствуют законодательству Российской Федерации. Состав аптечки первой помощи (автомобильный) регламентирует Приказ МЗ и Медпром РФ № 325 от 20.08.1996 и Приказ МЗ РФ № 697 н от 08.09.2009. Согласно этим документам, с 1 июля 2010 года из состава автомобильной аптечки полностью исключены медикаменты, и оставлены только перевязочные (бинты, перевязочный пакет) и кровоостанавливающие (жгут, салфетки) средства. Кроме того, в аптечке есть лейкопластыри, медицинские перчатки для обработки грязных ран и устройство для реанимации — УДР или устройство для проведения искусственного дыхания «Рот-устройство-Рот». Каждому автомобилисту необходимо помнить, что поездка без аптечки может закончиться большими неприятностями для здоровья, которых можно избежать, вовремя и грамотно воспользовавшись стандартным набором первой медицинской помощи.

          Во время поездки с авто может случиться какая-либо техническая неисправность — от этого не застрахованы даже новые или только что прошедшие полный комплекс техобслуживания автомобили. В наборах автомобилиста производства компании «Виталфарм» есть те необходимые автоаксессуары, которые пригодятся при аварии. Например, знак аварийной остановки и надежный буксировочный трос, незаменимый при серьезной поломке автомобиля.

          При проблемах с аккумуляторной батареей незаменимы провода для прикуривания — благодаря этому изделию аккумулятор оперативно подзаряжается и готов к работе. Качественные стартовые провода прикуривателя будут служить много лет. Автомобильные наборы производства компании «Виталфарм» комплектуются стартовыми проводами (проводами-прикуривателями) российского производства с медной токопроводящей жилой, что особенно важно в условиях российской зимы.

          Самостоятельное устранение неисправностей, особенно в темное время суток, сопряжено с риском быть незамеченным другими участниками движения. В такой ситуации необходимо всегда надевать аварийный жилет со светоотражающими элементами, также входящий в автонабор.

          В случае возникновения возгорания в автомобиле поможет имеющийся в комплекте надежный огнетушитель (2 литра). Напоминаем, что Правила Дорожного Движения запрещают эксплуатацию авто, если в нем отсутствует огнетушитель.

          В автомобильные наборы по желанию клиента могут входить и другие автоаксессуары. Среди них плащ-дождевик, необходимый в непогоду, плед на заднее сиденье автомобиля из водонепроницаемых материалов, защищающий обивку сидений от преждевременного износа и грязи. Еще одно актуальное для автомобилистов изделие — сетки в багажник. Благодаря сеткам в салоне автомобиля больше не будет лишних предметов, в багажнике всегда будет идеальный порядок, а перевозка хрупких предметов значительно упростится.

          С автомобильными аксессуарами от компании «Виталфарм» прохождение ГосТехосмотра, оказание первой медицинской помощи и уход за автомобилем станут более простыми и комфортными.

          Витал-фарм — аксессуары первой помощи и ухода за больными

          На российском рынке изделий медицинского назначения компания «Виталфарм» прежде всего известна как один из крупнейших производителей аптечек первой медицинской помощи. Это, в первую очередь, автомобильные аптечки и аптечки матери и ребенка. Широкой линейкой представлены универсальные аптечки, для оказания первой доврачебной помощи в самых разных ситуациях; для промышленных предприятий и офисов выпускаются производственная и офисная аптечки.

          Еще одно важное направление в работе компании — изготовление санитарно-гигиенических изделий из поливинилхлорида. Из этого материала изготавливаются самые разные по назначению изделия, и все они получаются долговечными и удобными в использовании. Первой в России компания «Виталфарм» стала выпускать медицинскую клеенку на ПВХ основе; наша клеенка имеет отличную теплопроводимость и износостойкость, и отличается мягкостью материала. Клеенка с ПВХ покрытием «Виталфарм» рекомендована к медицинскому применению и к применению в педиатрии. Другие изделия производства «Виталфарм» из поливинилхлорида — стаканчики для приема лекарств и спринцовки всех типоразмеров — необходимые предметы для личной гигиены, которые широко применяются в медучреждения и дома.

          Витал-бэби — аксессуары для ухода за малышами

          Еще одно ключевое направление деятельности компании — изделия, ориентированные на уход за ребенком в самом раннем возрасте. В первые годы жизни дети наиболее уязвимы, поэтому особенно важно использовать вещи исключительно безвредные и из экологичных материалов.

          Помимо ярких и красивых нагрудничков, наматрасников, фартуков и прочих защитных изделий, необходимых малышу, компания «Виталфарм» предлагает натуральные многоразовые подгузники, защитные сетки от насекомых, которые сохранят ребенку спокойный сон, а также нарукавники — для тех, кто уже в раннем возрасте увлекся творческими занятиями. Линейка товаров для детей и мам производства компании «Виталфарм» постоянно расширяется, и мы рады постоянно предлагать нашим покупателям новинки!

          Продукция компании «Виталфарм» завоевала заслуженную известность. С нами работают ведущие компании, лидеры в дистрибуции и продажах на фармацевтическом, автомобильном рынке и рынках потребительских товаров. Высочайший профессионализм наших сотрудников, индивидуальный подход к клиентам, ответственное отношение ко всем нюансам работы составляют основу нашей репутации.

          vitalfarm.ru

          Смотрите так же:

          • Правила движения на подъеме Правила движения на подъеме ГОСТ Р 52289-2004 НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ Технические средства организации дорожного движения ПРАВИЛА ПРИМЕНЕНИЯ ДОРОЖНЫХ ЗНАКОВ, РАЗМЕТКИ, […]
          • Приказ 408 минздрав Приказы и СанПины Даты и события Утверждены Постановлением Главного государственного санитарного врача Российской Федерации от 22 января 1999 г. N 2 Дата введения - 22 марта 1999 […]
          • Пособия многодетным 2014 Пособие многодетным семьям начали выплачивать в Иркутской области src] => [SRC] => /upload/iblock/49f/tri1.jpg ) [1] => Array ( [ID] => 260076 [TIMESTAMP_X] => 05.08.2014 21:06:26 […]
          • Как оформить приложения по госту Оформление приложения в дипломе по ГОСТу Для большинства научных дисциплин приложения являются важной составляющей научно-исследовательских работ, особенно дипломных работ и проектов. Они […]
          • Беседа с детьми о правилах общения Беседа с детьми средней группы «Вежливость. Вежливые слова» Анна Шильченко Беседа с детьми средней группы «Вежливость. Вежливые слова» Цель: закреплять знания детей о том, что такое […]
          • Доу презентация правила дорожного движения Протокол родительского собрания по правилам дорожного движения с участием работника ГИБДД Светлана Шигапова Протокол родительского собрания по правилам дорожного движения с участием […]