Antonchik
@Antonchik
Программирую на HTML

Как настроить маршрутизацию?

Здравствуйте. Как можно сделать чтобы я по ссылке
domain.com/o-kompanii
попадал на
domain.com/index.php?r=page/default/index&alias=o-kompanii
а по ссылке
domain.com/admin
попадал сюда
domain.com/index.php?r=admin


ведь если написать так '/<alias>' => 'page/default/index/',

я не смогу попасть на контролер admin так как оно будет искать page с alias=admin, как решить такую проблему? Я использую yii1
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
Поскольку у Вас для обоих ссылок одинаковый формат, domain.com/ то нужно самостоятельно определять к чем относиться текущее value. Поэтому у Вас есть следующие варианты:
1. Сделать свое URL правило которое будет по какому-то алгоритму анализировать входящее value и определять какому компоненту системы стоит переадресовать запрос
2. Определить url-правила следующим образом
'/<alias:(admin|firstmodule|secondmodule)>' => '/<alias>',  // в круглых скобках ссылки на корень модуляя
'/<alias>' => 'page/default/index',

Если я не ошибаюсь yii2 ищет правила до первого подходящего, таким образом мы говорим что если value входит в список заданных модулей мы ничего с ним не делаем, а если не входит отправляет запрос в контроллер default модуля page
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
za4me
@za4me
Человек
Настроить можно через rules в url manager.
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Максим Федоров привел очень правильный пример. Но если сложно для понимания, можно в лоб:
'admin'=>'admin/default/index',
'o-kompanii'=>'page/default/index',

Но Ваша структура наложит ограничения на использование alias в page, поэтому я бы делал для страниц не /o-kompanii и /admin а /page/o-kompanii и /admin или вынес бы admin на поддомен
Или как вариант добавил бы ко всем страницам "page-", тогда так:
'admin' => 'admin/default/index',
'page-<alias>' => 'page/default/index',
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы