当用户访问时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
],
],
Run Code Online (Sandbox Code Playgroud)
第一条规则工作正常.
我可以在url规则中传递路由的参数吗?
您需要使用默认值并明确声明规则:
'urlManager' => [
'rules' => [
'login' => 'site/login',
[
'pattern' => 'about',
'route' => 'cms/page',
'defaults' => ['id' => 10],
]
],
],
Run Code Online (Sandbox Code Playgroud)
'mode' => \yii\web\UrlRule::PARSING_ONLY如果要在Url::to()使用UrlManager 创建URL时阻止转换,请添加到此规则(例如,使用UrlManager及其规则并以相反的方向工作,即Url::to(['cms/page', 'id' => 10])生成链接about)
另请考虑在Web服务器上配置重定向.