Yii - 隐藏URL中的模块名称

时间:2012-11-09 10:43:55

标签: module yii

我目前的网址结构如下:

http://www.mydomain.com/module/controller/action

我需要隐藏URL的模块部分。有什么方法可以做到吗?

感谢。

2 个答案:

答案 0 :(得分:4)

要将网址http://www.mydomain.com/customer/login指向模块, 在 urlManager 下的配置(protected / config / main.php)中:

'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+>',

取决于值的控制器/操作部分(在=&gt;的右侧)是设定值还是变量。

因此,如果您希望任何控制器/操作转到完全网址模块/控制器/操作,您将使用第一个示例。例如,如果您希望控制器/操作站点/测试转到模块/控制器/操作,您将使用上面的第一个示例

如果您希望任何控制器/操作转到动态控制器/操作,请使用第二个。例如,如果您希望控制器/操作站点/测试转到模块/站点/测试,您将使用上面的第二个示例

此新规则必须高于3个默认Yii规则,因为它们是从上到下读取的,并且与仅找到的第一个规则相匹配

答案 1 :(得分:1)

是的,您可以在配置中定义任何网址规则。

您的网址规则可能如下所示:

'<controller:(foo|bar)>/<action>' => 'module/<controller>/<action>',