yii2 路由 - 将参数传递给规则中的路由

yii2 routing - pass parameter to route in rules

当用户访问 domain/page 时,我需要将他们路由到 controller/action/100。 我不想通过 URL 传递任何参数,但想在 url 规则中添加它。

我将下面的代码添加到我的配置文件中。

'urlManager' => [
    'rules' => [
        'login' => 'site/login',  // working
        'about' => 'cms/page/10'  // Not Working
        'about' => 'cms/page?id=10'  // Not Working
    ],
],

第一条规则运行良好。

我可以在 url 规则中传递路由参数吗?

您需要使用 defaults 并显式声明规则:

'urlManager' => [            
    'rules' => [
        'login' => 'site/login',
        [
            'pattern'  => 'about', 
            'route'    => 'cms/page',
            'defaults' => ['id' => 10],
        ]  
    ],
],

如果您想在使用 UrlManager 创建 URL 时阻止转换,请将 'mode' => \yii\web\UrlRule::PARSING_ONLY 添加到此规则(例如 Url::to() 使用 UrlManager 及其规则并在相反方向,即Url::to(['cms/page', 'id' => 10])会生成一个linkabout)

另请考虑在您的网络服务器上配置重定向。