Меню

bitrix настройка правил обработки адресов bitrix

Битрикс. Система обработки адресов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • если на веб-сервере настроена обработка ошибки 404 (например, для Apache установлена директива ErrorDocument 404 /404.php ), то надо изменить файл 404.php в корне сервера, вставив в самое начало:
  • если для Apache используеся модуль mod_rewrite , то в .htaccess надо указать:
Читайте также:  galaxy ace i8160 сбросить настройки

источник

Обработка адресов

Понятие обработки адресов

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

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

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

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

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

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

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

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

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

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

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

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

Если в системе обработки адресов зарегистрировано правило:

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

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

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

Читайте также:  настройка vpn на модеме huawei hg552d

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

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

  • если у вас на веб-сервере настроена обработка ошибки 404 (например, для Apache установлена директива ErrorDocument 404 /404.php ), то вы должны изменить файл /404.php, вставив в самое начало файла команду:
  • если вы для Apache используете модуль mod_rewrite, то в его настройках вы можете указать (например, как в штатной установке в файле .htaccess):
  • Настройка переадресации (301 редирект) на папки со слешем ( / ) в конце:
  • Переадресация (301 редирект) с индексной страницы index.php на саму папку (корень) для всех страниц сайта:

Поддержка компонентов 2.0

При добавлении на страницу компонента с поддержкой ЧПУ («человеко-понятный URL«) (если файл сохраняется с помощью API), автоматически создаётся правило обработки адреса. Если страница создаётся не с помощью API, а, например, записывается через FTP, то необходимо выполнить пересоздание правил (кнопка на панели инструментов на странице настройки правил обработки адресов).

Поддержка ЧПУ включается в компоненте с помощью предопределённого входного параметра SEF_MODE. При этом в предопределённом входном параметре SEF_FOLDER устанавливается папка, в которой работает компонент. Папка может быть виртуальной (т.е. физически может не существовать). При сохранении страницы с размещённым на ней компонентом, переключенным в режим ЧПУ (параметр SEF_MODE равен Y), через стандартный интерфейс правило обработки адресов создаётся следующим образом: в ключ условия применения шаблона («CONDITION«) записывается регулярное выражение, полученое из папки в параметре SEF_FOLDER, в ключ «ID» записывается имя компонента, в ключ пути («PATH«) записывается физический адрес страницы.

Например, пусть компонент «bitrix:catalog» размещён на странице /fld/c.php и его подключение выглядит следующим образом:

Тогда при сохранении страницы /fld/c.php в системе обработки адресов добавится запись:

Таким образом, при запросе адресов, начинающихся со строки /mycatalog/, будет подключаться скрипт /fld/c.php. В этом скрипте запрошеный адрес может быть проанализирован и выполнены требуемые действия.

См. также

  • ЧПУ в курсе Администратор Базовый.
  • Настройка ЧПУ в курсе Разработчик Bitrix Framework.
  • Работа комплексного компонента в SEF режиме в курсе Разработчик Bitrix Framework.
Читайте также:  как сбросить настройки в бандикам

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

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

Иногда важно помнить, что проверки на «более точное соответсвие» нет, и правила проверяются в том порядке, как они записаны в файле urlrewrite.php. Например, если два правила записаны так:

Код

второе правило не сработает для «своего» адреса (например /about/news/55/), т.к. первое, универсальное, срабатывает для этого адреса. То есть, более точные правила нужно писать в начало файла, а обобщённые — в конец.

Упрощенный вариант правила, решающий проблему, описанную Денисом Мальцевым в предыдущем комментарии.

Одна интересная особенность, которую надо учитывать.

Допустим вам надо сделать преобразование такого вида, чтобы при открытии страницы /news/445.php происходило преобразование в /news/detail.php?ID=445
Можно использовать такое правило

Код

Оно даже будет работать, но ровно до тех пор пока в строке не появятся дополнительные параметры. Например пользователь перешел с внешнего ресурса и в URL была добавлена метка для Google Analitics, запрошенный URL получился примерно такой /news/445.php?utm_source=google. Вместо текста новости вы увидите сообщение «Элемент не найден», потому что в результате преобразования получился такой адрес /news/detail.php?ID=445?utm_source=google.

Ниже приведен код, решающий эту проблему:

Задача : Выполнить 301 редирект с одного домена на другой, чтобы любой адрес домена olddomain вёл на тот же адрес, но в домене newdomain.

источник

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

В Битриксе (пойдёт через апач и /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 )

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

источник

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

Adblock
detector