将所有请求(不与其他路由匹配)路由到单个操作

bea*_*dev 5 yii2

我使用catchAll路由到我的配置

'catchAll' => ['site/page']
Run Code Online (Sandbox Code Playgroud)

它工作正常.

但是所有请求都会执行此操作,即使是具有单独控制器/操作的操作也是如此.

如何映射路由以首先匹配控制器/操作,如果相应的控制器/操作不存在,那么回退以捕获所有路由?

Mih*_* P. 9

这个配置做你想要的:

'urlManager' => [
    'class' => 'yii\web\UrlManager',
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        'contact' => 'site/contact',
        '/' => 'page/view',
------> HERE
        '/<url:[a-zA-Z0-9-]+>' => 'site/page',
    ],
],
Run Code Online (Sandbox Code Playgroud)

您应该修改规则以捕获更多字符.我用过这个,因为我知道我的路线.

catchAll当您想要将网站置于维护模式时,应该使用它.在这种情况下也可以使用错误捕获.