1. Переадресация для статических страниц и разделов
|
---|
В простых случаях, когда страницу со статической информацией нужно открыть по заранее известному другому адресу, в форме создания правила достаточно указать новый адрес в условии и полный путь к файлу. Например:
Важно: если страница, которую нужно открыть по условию, это раздел, то не забудьте дописать index.php в конце (индексную страницу раздела). На сайте в пути к разделу эта страница по-умолчанию не отображается, но она нужна в поле Файл, чтобы система понимала, какой файл открывать. |
Примеры правил
В уроке рассмотрим примеры создания правил обработки адресов.
Видеоурок
Список примеров
Ниже приведено несколько частных примеров решения задач переадресации. В них вы увидите примеры регулярных выражений, но мы не даём подробных объяснений по каждому символу в условии. Информацию о том, что значит тот или иной символ, вы найдёте в дополнительных источниках о Perl совместимых регулярных выражениях (PCRE).
2. Переадресация с .html на .php
|
---|
Представим, что на сайте были страницы с расширением .html. Вы переделали все страницы на .php и хотите, чтобы по старым ссылкам пользователи попадали на актуальные страницы. Для решения задачи подойдёт правило:
Такое решение позволит в том числе передать параметры в вызов страницы. Например, если пользователем запрошена страница /about/delivery/index.html?bitrix_include_areas=Y, то будет подключен скрипт /about/delivery/index.php?bitrix_include_areas=Y. |
3. Страница откликается на другой адрес с учётом параметров (динамическая информация)
|
---|
Нужно, чтобы динамическая страница вида /gospel/pericope/?SECTION_ID=15&ELEMENT_ID=238
откликалась на адрес вида /gospel/pericope/15/238/. Т.е. по числовым идентификаторам раздела и элемента, указанным через символы слеша.
Создайте правило с использованием переменных:
Переменная $1 будет равна значению, указанному в условии в первых круглых скобках ([0-9]+), а переменная $2 – во вторых круглых скобках ([0-9]+). |
4. Запись символьных кодов разделов в адресе через дефис
|
---|
Допустим мы хотим иметь адрес страницы раздела вида mysite.ru/section-subsection/, т.е. запись раздела и подраздела через дефис. Например, mysite.ru/accessories-belts/. При этом если раздел один, без подразделов, то запись будет простой вида mysite.ru/section/.
Кажется, что создать правило несложно:
Первые круглые скобки соответствуют разделу, поэтому ставим любой символ, повторяющийся 1 или более раз. Затем дефис и во вторых скобках – любой символ, повторяющийся 0 и более раз, т.к. подраздела может и не быть. На самом деле такое правило корректно работать не будет по нескольким причинам:
Итого, конечное условие нашей задачи может выглядеть так: #^/(.+?)\-??(.*)/#. Если вы знаете, что ваши символьные коды состоят только из цифр, букв и символа нижнего подчеркивания, то можно записать правило так: #^/(\w+?)\-??(\w*)/#. |
5. Пример создания двух правил для одной страницы
|
---|
Пусть стоит задача, создать такое правило обработки адресов, которое бы открывало элемент каталога как по его идентификатору, так и по его символьному коду. Ссылка должна быть вида mysite.ru/cat/section_code/element_id/ или mysite.ru/cat/section_code/element_code/. При этом важно иметь возможность добавлять дополнительные параметры к этой ссылке, с которыми будет вызвана страница /catalog/detail.php (на странице размещён компонент catalog.detail).
Для реализации такой задачи лучше сделать два правила для одной страницы. Использование нескольких правил допускается системой. Первое для ссылки с идентификатором элемента:
Здесь значением переменной $2 будет только число (\d+). Второе для ссылки с символьным кодом элемента:
Здесь значением переменной $2 будет алфавитно-цифровой код с символами дефиса и нижнего подчеркивания. Причем первым символом должна обязательно быть буква [a-z]{1}. 3) В настройках компонента детальной карточки товара не забудьте указать: |
6. Пример объединения правил при использовании трёх языков на сайте
|
---|
Обработка адресов поддерживает регулярные замены. Допустим работа сайта реализована на трёх языках. Язык указывается после домена сайта. Объединённое правил (для трёх языков) может выглядеть так:
Здесь значением переменной $1 являются первые круглые скобки в условии ([de|ru|ua]+), а переменной $2 – вторые круглые скобки ([0-9]+). |
7. Ручная настройка ЧПУ в простых компонентах
|
---|
Как вручную настроить ЧПУ, если используется catalog:sections и element:detail вместо комплексного компонента? Пусть ссылки на разделы каталога должны иметь вид /catalog/section_name/, а на товары /catalog/section_name/element_name/.
1) Создайте два правила:
2) В настройках инфоблока каталога укажите: 3) В настройках компонентов укажите: |
Материалы по теме
- Документация:
- Список правил обработки адресов;
- Создание и редактирование правила обработки адресов;
- Пересоздание правил обработки адресов.
- Обсуждение различных правил в теме на форуме.
и Ваше мнение важно для нас