@latishew

Urlrewrite битрикс. Как написать правило исключающее из url символьный код элемента?

Заведен инфоблок для городов. К выбору доступны те города которые есть в инфоблоке.

Url при выборе города формируется вида /element_code/catalog/ но соответственно отдает 404, как перенаправлять запрос просто на /catalog/ ? catalog дан для примера, урлов может быть великое множество но все они будут начинаться с element_code города.
  • Вопрос задан
  • 1908 просмотров
Решения вопроса 2
gromdron
@gromdron
Работаю с Bitrix24
Если Вы действительно хотите реализовать подобное (и если я вас правильно понял), то Вам нужно будет сделать не только это.

Шаг 1.
1) Создайте страницу /catalog/index.php, на этой странице выведите $_REQUEST
2) Создайте правило (взял из примера выше, у пользователя Артём Лучников )

array(
    "CONDITION" => "#^/([a-zA-Z0-9_-]*)/catalog/.*#",
    "RULE" => "city_code=\$1",
    "PATH" => "/catalog/index.php",
)


3) Проверьте, что при заходе, например на /moscow/catalog/, открывается страница и в выведенном массиве есть city_code=moscow

Шаг 2.
1) Скопируйте в свое пространство компонент catalog (комплексный) [например custom:catalog], вынесите его на страницу /catalog/index.php
2) Добавьте в component.php еще одну разделяемую переменную в arComponentVariables - назовите ее, например CITY_CODE, напишите обработчики в тело комплексного компонента, которые будут "переваривать" введенный текст и будут перенаправлять на нужные страницы. В шаблоне sections.php сделайте вывод $_REQUEST
3) Проверьте, что при заходе, например на /moscow/catalog/, открывается страница и в выведенном массиве есть city_code=moscow

Шаг 3.
1) В вынесенном компоненте (из примера выше это custom:catalog), сделайте обработчик указанной переменной city_code, которая и определяет, есть ли указанный город в инфоблоке
2) Проверьте что все работает корректно

Ну и вишенка на торте, что если бы вы сделали выбор инфоблока, откуда берутся города в переменные компонента.
Ответ написан
Комментировать
Попробуйте задать такое правило в urlrewrite.php:
array(
    "CONDITION" => "#^/([a-zA-Z0-9_-]*)/catalog/.*#",
    "RULE" => "element_code=\$1",
    "PATH" => "/catalog/index.php",
)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
А не проще ли сделать вместо domain.ru/city_code/ так: city_code.domain.ru ?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы