Правила обработки адресов битрикс – Список правил обработки адресов

Список правил обработки адресов

В этом разделе
  • Фильтр
  • Контекстная панель
  • Список правил
  • Управление правилами преобразования адресов производится на странице Обработка адресов (Настройки > Настройки продукта > Обработка адресов).

    Обработка адресов (UrlRewrite) применяется для того, чтобы скрипт мог отвечать не только по своему физическому, но и по любому другому указанному адресу. Например, можно задать такие настройки обработки адресов, что скрипт, лежащий в файле /fld/c.php и отвечающий по адресу /fld/c.php?id=15 будет отвечать также по адресу /catalog/15.php.

    Адрес, по которому будет отвечать скрипт, не должен физически существовать на сервере. Если такой адрес физически существует, то будет вызван скрипт по этому адресу. Система обработки адресов запущена в этом случае не будет.

    Фильтр

    Форма фильтра используется для выбора из списка правил обработки в соответствии с указанными условиями. Нижеследующая таблица описывает параметры, по которым может выполняться поиск.

    ПолеОписание
    ПутьПоиск правила по пути к файлу.
    СайтПоиск правил для указанного сайта.
    УсловиеПоиск правил обработки адресов по условию применения.
    КомпонентПоиск правил по полному имени компонента (пространство_имен:имя_компонента).

    Для того чтобы отобрать правила по заданным критериям поиска, нажмите кнопку Найти. Для отображения всех правил нажмите кнопку Отменить.

    Контекстная панель
    Список правил
    ПолеОписание
    Колонка флажковПоле предназначено для выбора правил, к которым предполагается применить какое-либо действие.
    ДействиеДействия над правилами:
    УсловиеУсловие, по которому правило будет применено.
    КомпонентКомпонент, для которого работает правило обработки адресов.
    ФайлУказывается путь к файлу, который будет отображен в результате обработки адреса.
    ПравилоПравило вызова страницы, путь к которой указан в поле Файл.
    Смотрите также:

    © «Битрикс», 2001-2019, «1С-Битрикс», 2019

    Наверх

    dev.1c-bitrix.ru

    Битрикс. Система обработки адресов. Категория: Web-разработка • CMS Битрикс

    Обработка адресов (UrlRewrite) применяется для того, чтобы скрипт мог отвечать не только по своему физическому, но и по любому другому указаному адресу. Например, можно задать настройки обработки адресов, чтобы скрипт в файле

    /folder/index.php, отвечающий по адресу

    /folder/index.php?id=15

    отвечал также по адресу

    /folder/item/15/

    Адрес, по которому будет отвечать скрипт, не должен физически существовать на сервере. Если такой адрес физически существует, то будет вызван скрипт по этому адресу. Система обработки адресов запущена в этом случае не будет.

    Правила обработки

    Правила обработки адресов настраиваются отдельно для каждого сайта и хранятся в корне сайта в файле urlrewrite.php. Файл содержит массив $arUrlRewrite, каждая запись которого является правилом обработки адреса. Файл urlrewrite.php имеет следующий вид:

    <?php
    $arUrlRewrite = array (
        array (
            'CONDITION' => '#^/catalog/category/([^/]+?)/\\??(.*)#',
            'RULE' => 'SECTION_CODE=$1&$2',
            'ID' => 'bitrix:catalog.section',
            'PATH' => '/catalog/section.php',
            'SORT' => 100,
        ),
        array (
            'CONDITION' => '#^/catalog/product/([^/]+?)/\\??(.*)#',
            'RULE' => 'ELEMENT_CODE=$1&$2',
            'ID' => 'bitrix:catalog.element',
            'PATH' => '/catalog/element.php',
            'SORT' => 100,
        ),
    );

    Каждое правило должно содержать уникальное в рамках сайта условие выполнения правила. Условие выполнения записывается в ключ CONDITION массива и является шаблоном регулярного выражения. Например, условие:

    'CONDITION' => '#^/index/([0-9]+)/([0-9]+)/#'

    указывает, что данное правило должно применяться для всех адресов, которые начинаются с подстрок вида:

    /index/<число>/<число>/

    Правило может содержать адрес физически существующего скрипта, который будет подключен при выполнении условия. Этот адрес записывается в ключ PATH. Например, если в системе обработки адресов зарегистрировано правило:

    array(
        'CONDITION' => '#^/gallery/#',
        'PATH' => '/users/images/index.php',
    )

    и пользователь запросил URL

    /gallery/images

    которого физически не существует, то система обработки адресов подключит скрипт:

    /users/images/index.php

    Правило может содержать строку замены, которая записывается в ключ RULE. Если строка замены установлена, то адрес реально существующего подключаемого скрипта формируется заменой регулярным выражением условия выполнения (шаблона выражения) на конкатенацию физического пути (ключ PATH) и строки замены (ключ RULE). Например, если в системе обработки адресов зарегистрировано правило:

    array(
        'CONDITION' => '#^/forum/([0-9]+)/([0-9]+)/#',
        'RULE' => 'mode=read&CID=$1&GID=$2',
        'PATH' => '/forum/index.php',
    )

    и пользователем запрошена страница:

    /forum/17/23/

    то для формирования адреса скрипта, который будет подключен, выполнится код:

    $url = preg_replace(
        '#^/index/([0-9]+)/([0-9]+)/#',
        '/forum/index.php?mode=read&CID=$1&GID=$2',
        '/index/17/23/'
    );

    и будет подключен скрипт:

    /forum/index.php?mode=read&CID=17&GID=23

    Правило может содержать имя компонента, который создал это правило. Это имя записывается в ключ ID. При автоматическом пересоздании файла правил urlrewrite.php с помощью средств административной части сайта пересоздаются только правила, у которых заполнен ключ ID.

    Подключение системы обработки адресов

    Перед началом использования система обработки адресов должна быть подключена на сайте. Для этого необходимо:

    • если на веб-сервере настроена обработка ошибки 404 (например, для Apache установлена директива ErrorDocument 404 /404.php), то надо изменить файл 404.php в корне сервера, вставив в самое начало:
      include_once $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php';
    • если для Apache используеся модуль mod_rewrite, то в .htaccess надо указать:
      <IfModule mod_rewrite.c>
          RewriteEngine On
          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteCond %{REQUEST_FILENAME} !-l
          RewriteCond %{REQUEST_FILENAME} !-d
          RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
          RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
      </IfModule>

    Поиск: Apache • CMS • RegExp • SEO • URL • Web-разработка • Битрикс • ЧПУ • Шаблон • Настройка

    tokmakov.msk.ru

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

    Если послушать рядовых пользователей, то ЧПУ «Битрикс» непостижим, чужд и враждебен, как космос. Штука и впрямь непростая, даже сами разработчики 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. Затем проверьте, верно ли записаны правила.

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

    http://dev.1c-bitrix.ru/api_help/main/general/urlrewrite.php

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

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

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

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

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

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

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

    Выявленное исправьте.

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

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

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

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

    ——————————-
    Спасибо за внимание!
    Читайте свежий выпуск «Кладовки программиста» каждый день!

     

     

    Источник: 

    Назад в раздел

    www.acrit-studio.ru

    Настройка ЧПУ в Битрикс | Правила обработки адресов в Битрикс

  • Выводы
  • Это завершающая статья из серии о решении сложных задач поисковой оптимизации на Битрикс.

    Настраиваем ЧПУ фильтров для интернет-магазинов на Битрикс

    Хороший хирург поможет плохому танцору.

    Зачем нужна настойка ЧПУ в Битрикс? Для чего знать о правилах обработки адресов в Bitrix? Допустим, мы продвигаем большой каталог недвижимости (или мебели, или электроники).
    Конкуренция серьезная. Запросов много.
    На сайте 20 тысяч объектов. В нашем случае — квартир, домов и участков под застройку.

    Что говорит оптимизатор? Семантическое ядро будет состоять из:

    1. нескольких десятков высокочастотных запросов вроде
      купить квартиру 
      аренда склада москва

    2. сотен запросов средней частоты вроде
      участки под строительство дома новая москва
      продажа земли промышленного назначения в калужской области

    3. В каталогах электроники, мебели или любого другого штучного товара будут еще и десятки тысяч низкочастотников вроде:
      Кухня Artika фабрики Pedini spa
      Компактный асинхронный двигатель Siemens 1PH8 для SINAMICS S120

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

    Для каждого запроса нужна отдельная осмысленная страница.

    Причем для нее оптимизатор захочет задавать правильные title, keywords и seo-тексты. Для отдельных страниц вручную это легко делать с помощью модуля Инструменты SEO-специалиста , а если для всех сразу — придется прописать шаблоны автоматического формирования заголовков и сео-текстов.

    Для высокочастотных запросов подходят страницы разделов сайта из меню, для низкочастотных страниц — детальные страницы отдельных элементов.
    А вот со среднечастотными на первый взгляд есть проблема — не видно на сайте таких страниц.
    И тут оптимизатора осеняет: а давайте продвигать страницы поисковой выдачи, отфильтрованные списки элементов.

    Обычно такие страницы специально закрыты от индексации и SEO-шника не беспокоят заголовки, ключевые слова и адреса таких страниц. Неудивительно, что Битрикс, который умеет делать красивые ЧПУ-адреса, для страниц поиска генерирует такие ссылки:

    site.ru/base/?arrFilter_P1_MIN=3000&arrFilter_P1_MAX=3400&arrFilter_4_2348707219=Y&arrFilter_9_1776166634=Y&arrFilter_10_692893017=Y&arrFilter_10_3068644278=Y

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


    Механизм параметрического поиска — сложный. Особенно если применяется умный фильтр Битрикс , автоматически подстраивающий доступные параметры под то, что фактически есть в базе.
    Хитрых задач с таким поиском хватает и без ЧПУ.
    Задача создания ЧПУ-адреса для фильтров вполне решаемая.
    Общая схема действий программиста и оптимизатора такова:

    Организационный этап. Проектирование ЧПУ-адресов для Bitrix.

    1. Выделить те параметры поиска, которые должны преобразовываться в слова на русском языке (транслитом). Остальные допустимо оставить get-параметрами.

      Оптимизатору желательно хорошо подумать и не быть максималистом. “Сделать все” — плохая идея.
      Пример хорошего решения. Три параметра формируют предложение на русском языке.

    2. Утвердить шаблоны ЧПУ (может быть, еще заголовков и сео-текстов), которые будут формироваться. Желательно проговорить порядок слов в тексте и даже правила транслитерации. Например, в примере выше слово “купить” в адресе фигурирует как “prodaja”.

    Результатом этого этапа должно стать ТЗ на ЧПУ-адреса фильтров. Работа непростая, и подумать лучше несколько раз.
    Сложность реализации ТЗ очень зависит от числа параметров, связей между ними и сложности шаблона ЧПУ-адреса.

    Технический этап. Программирование ЧПУ фильтров на Битриксе.

    Рассмотрим решение задачи с точки зрения программиста. Для того, чтобы формировать и обрабатывать человеко-понятные адреса вроде

    /prodaja/promyshlennye_zemli-rostovskaya_oblast/ (ЧПУ-стиль)

    нужно уметь сопоставлять их с исходными, например такими

    ?arrFilter_P1=3&arrFilter_P2=1120&arrFilter_4_2348707219=Y (олдскул-стиль)

    Можно полностью переписать компонент фильтрации, “научив” его работать с такими адресами.

    Мы рекомендуем стандартные компоненты по возможности не трогать. Вместо этого нужно лишь слегка изменить обработку адресов на входе:

    1. Компонент фильтрации остается без изменений и посылает пользователя на страницу с обычным “олдскул”-адресом.

    2. На целевой странице написан специальный программный фрагмент, который понимает, что открыт адрес, который нужно преобразовать к ЧПУ-виду. Он делает такое преобразование и делает переадресацию на ЧПУ-страницу.

    3. При открытии ЧПУ-страницы тот же программный элемент, понимая, какие значения закодированы в ЧПУ-адресе, заполняет массив REQUEST теми значениями, которые нужны для работы стандартных компонент.

    Технически поведение ЧПУ-фильтра реализуется классом, который в проекте среднего уровня содержит 400 строк php-кода. Больше нюансов — сложнее реализация.
    Грубая оценка добавления ЧПУ к уже работающему фильтру — от 20 до 70 часов работы.

    Выводы

    Скажите честно, доктор, эти ваши лечебные травы приносят хоть какую-нибудь пользу?             
    -А как же! Недавно я купил сыну квартиру в Москве, а дочке достраиваю дом…

    Программист и оптимизатор не враги. Хороший разработчик обязан уметь слушать разумные доводы SEO-специалиста. Помните — миром правит маркетинг, а технологии ему служат.
    А оптимизаторам нужно уметь применять в убеждении не астрологию, а аналитику.
    Что же касается Битрикса — в умелых руках он может все, что нужно оптимизатору.

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

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

    Оцените статью:

    Спасибо, ваш голос успешно добавлен!

    www.intervolga.ru

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *