Список правил обработки адресов
В этом разделе
Управление правилами преобразования адресов производится на странице Обработка адресов (Настройки > Настройки продукта > Обработка адресов).
Обработка адресов (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?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 тысяч объектов. В нашем случае — квартир, домов и участков под застройку.
Что говорит оптимизатор? Семантическое ядро будет состоять из:
нескольких десятков высокочастотных запросов вроде
купить квартиру
аренда склада москвасотен запросов средней частоты вроде
участки под строительство дома новая москва
продажа земли промышленного назначения в калужской областиВ каталогах электроники, мебели или любого другого штучного товара будут еще и десятки тысяч низкочастотников вроде:
Кухня 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.
Выделить те параметры поиска, которые должны преобразовываться в слова на русском языке (транслитом). Остальные допустимо оставить get-параметрами.
Оптимизатору желательно хорошо подумать и не быть максималистом. “Сделать все” — плохая идея.
Пример хорошего решения. Три параметра формируют предложение на русском языке.Утвердить шаблоны ЧПУ (может быть, еще заголовков и сео-текстов), которые будут формироваться. Желательно проговорить порядок слов в тексте и даже правила транслитерации. Например, в примере выше слово “купить” в адресе фигурирует как “prodaja”.
Результатом этого этапа должно стать ТЗ на ЧПУ-адреса фильтров. Работа непростая, и подумать лучше несколько раз.
Сложность реализации ТЗ очень зависит от числа параметров, связей между ними и сложности шаблона ЧПУ-адреса.
Технический этап. Программирование ЧПУ фильтров на Битриксе.
Рассмотрим решение задачи с точки зрения программиста. Для того, чтобы формировать и обрабатывать человеко-понятные адреса вроде
/prodaja/promyshlennye_zemli-rostovskaya_oblast/ (ЧПУ-стиль)
нужно уметь сопоставлять их с исходными, например такими
?arrFilter_P1=3&arrFilter_P2=1120&arrFilter_4_2348707219=Y (олдскул-стиль)
Можно полностью переписать компонент фильтрации, “научив” его работать с такими адресами.
Мы рекомендуем стандартные компоненты по возможности не трогать. Вместо этого нужно лишь слегка изменить обработку адресов на входе:
Компонент фильтрации остается без изменений и посылает пользователя на страницу с обычным “олдскул”-адресом.
На целевой странице написан специальный программный фрагмент, который понимает, что открыт адрес, который нужно преобразовать к ЧПУ-виду. Он делает такое преобразование и делает переадресацию на ЧПУ-страницу.
При открытии ЧПУ-страницы тот же программный элемент, понимая, какие значения закодированы в ЧПУ-адресе, заполняет массив REQUEST теми значениями, которые нужны для работы стандартных компонент.
Технически поведение ЧПУ-фильтра реализуется классом, который в проекте среднего уровня содержит 400 строк php-кода. Больше нюансов — сложнее реализация.
Грубая оценка добавления ЧПУ к уже работающему фильтру — от 20 до 70 часов работы.
Выводы
Скажите честно, доктор, эти ваши лечебные травы приносят хоть какую-нибудь пользу?
-А как же! Недавно я купил сыну квартиру в Москве, а дочке достраиваю дом…
Программист и оптимизатор не враги. Хороший разработчик обязан уметь слушать разумные доводы SEO-специалиста. Помните — миром правит маркетинг, а технологии ему служат.
А оптимизаторам нужно уметь применять в убеждении не астрологию, а аналитику.
Что же касается Битрикса — в умелых руках он может все, что нужно оптимизатору.
Это завершающая статья из серии о решении сложных задач поисковой оптимизации на Битрикс. Обратите внимание на другие статьи серии:
Оцените статью:
Спасибо, ваш голос успешно добавлен!
www.intervolga.ru