Yii - скрытие имени модуля в URL
Моя нынешняя структура URL выглядит следующим образом:
http://www.mydomain.com/module/controller/action
Мне нужно скрыть раздел модуля URL. Есть ли способ сделать это?
Благодарю.
2 ответа
Чтобы указать URL-адрес http://www.mydomain.com/customer/login на модуль, в вашей конфигурации (protected/config/main.php) в urlManager:
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName' => false,
'rules'=>array(
'customer/login' => 'module/controller/action',
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
Чтобы выполнить какое-либо действие контроллера, перейдите к модулю / контроллеру / действию (как описано ниже), которое вы можете использовать:
'<controller:\w+>/<action:\w+>'=>'module/controller/action',
или же
'<controller:\w+>/<action:\w+>'=>'module/<controller:\w+>/<action:\w+>',
В зависимости от того, является ли контроллер / часть действия значения (справа от =>) заданным значением или переменной.
Так что, если вы хотите, чтобы какой-либо контроллер / действие перешло к конкретному модулю / контроллеру / действию url, вы должны использовать первый пример. Например, если вы хотите, чтобы контроллер / сайт действия / тест перешел в модуль / контроллер / действие, вы должны использовать первый пример выше
Если вы хотите, чтобы какой-либо контроллер / действие перешло к динамическому контроллеру / действию, вы используете второе. Например, если вы хотите, чтобы контроллер / сайт действия / тест перешел в модуль / сайт / тест, вы должны использовать второй пример выше
Это новое правило должно быть выше трех правил Yii по умолчанию, так как они читаются, сверху вниз и соответствуют только первому правилу, которое оно находит
Да, вы можете определить любые правила URL в вашей конфигурации.
Ваше правило URL может выглядеть примерно так:
'<controller:(foo|bar)>/<action>' => 'module/<controller>/<action>',