【问题标题】:Yii2 urlmanager rules for pretty urls failsYii2 urlmanager 规则漂亮的 url 失败
【发布时间】:2019-08-05 07:46:16
【问题描述】:

我有以下 url manager 路径

        'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
            '<controller:(\w|-)+>/' => 'site/index',
            '<module:api\w+>/<controller:\w+>/<action:(\w|-)+>' => '<module>/<controller>/<action>',
         ],
    ]

我正在寻找的是所有不通过 api 模块路径呈现的 url,通过 site/index 运行,但所有其他具有 api/* 的路径通过模块路径执行。

以上内容适用于 /login、/auth 之类的网址,但当我运行

之类的网址时
/administrative/uom 

失败了

所以基本上我希望通过site/index 重定向所有网址,但所有以api/auth/login 为前缀的网址都可以通过各自的控制器运行。 我添加了一个 api 模块来处理这个问题。

我还需要添加什么来完成这项工作?

【问题讨论】:

    标签: php yii2 yii2-urlmanager


    【解决方案1】:

    添加规则时,总是从更详细到不那么详细。并且您仅为控制器添加了一般规则,因此没有与操作匹配的 URL。这样做

    'rules' => [
        'api/<controller:\w+>/<action:[\w\-]+>' => 'api/<controller>/<action>',
        '<controller:[\w\-]+>/<action:[\w\-]+>' => 'site/index',
        '<controller:[\w\-]+>/' => 'site/index',
    ],
    

    【讨论】:

    • 感谢这适用于一般路线,但 api 路线不起作用。请注意, api 是一个模块。从您的回答中访问 api/auth 仍然调用 site/index
    • 在这种情况下添加'api/&lt;controller:\w+&gt;' =&gt; 'api/&lt;controller&gt;' 以及第二条规则
    • Bizley 我遇到了一个新问题,当我访问像管理/商店注册/注册甚至管理/商店注册/注册/测试这样的深层路由 URL 时,它不会调用站点/索引它尝试通过控制器/动作解决。即使有许多路径,我如何进一步调整它以工作
    猜你喜欢
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多