【问题标题】:Yii - Hiding module name in URLYii - 在 URL 中隐藏模块名称
【发布时间】:2012-11-09 10:43:55
【问题描述】:

我现在的网址结构如下:

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

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

谢谢。

【问题讨论】:

    标签: module yii


    【解决方案1】:

    要将 URL 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+>',
    

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

    因此,如果您希望 any 控制器/操作转到 exact url 模块/控制器/操作,您将使用第一个示例。例如,如果您希望控制器/操作 site/test 转到 module/controller/action,您可以使用上面的第一个示例

    如果您希望 任何 控制器/动作转到 动态 控制器/动作,请使用第二个。例如,如果您希望控制器/动作 site/test 转到 module/site/test,则可以使用上面的第二个示例

    这个新规则必须在 3 个默认 Yii 规则之上,因为它们被读取并且从上到下并匹配它只找到的第一个规则

    【讨论】:

    • 不知道为什么..但这仍然不起作用我仍然收到 404 错误
    • 奇怪...我已经更新了我的答案。您是否将 showScriptName 设置为 false?
    • 好的..这工作..谢谢。现在有没有办法让任何控制器/动作转到模块/控制器/动作?
    • 很好,没问题。检查我的编辑以查看如何使任何控制器操作转到模块/控制器/操作
    • 你能告诉我如何从 url 中隐藏我的模块名称吗?我无法使用此代码执行此操作,我使用 Yii Framework 1.1.x
    【解决方案2】:

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

    您的 url 规则可能如下所示:

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

    【讨论】:

    • 我希望 /customer/login 由 /module/customer/login 处理 上面没有发生这种情况。
    • 'urlManager'=>array('urlFormat'=>'path', 'showScriptName'=>'false', 'rules'=>array('/'=>'/view', '//'=>'/', ' /'=>'/', '/' => 'customer//' ),请您更正上述内容吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 2020-02-09
    相关资源
    最近更新 更多