首页 > 解决方案 > Yii2 UrlManager 字符串规则

问题描述

我正在尝试创建一个简单的规则 url,但我无法让它工作。

我想要以下规则:

mysite.com/[username]

要去

mysite.com/kit/page?id=[username]

这可能吗?。现在我只有一条规则,但我也需要遵守这条规则

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
    '' => 'site/index',
    ],
],

标签: yii2yii2-urlmanager

解决方案


如果我理解正确,您是说您有一个现有页面mysite.com/kit/page?id=[username],如果您在地址栏中输入 URL,则应该显示该页面mysite.com/[username],如果是,那么您可以更新urlManager以下内容

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        '/' => 'site/index',
        '<id:\w+>' => 'kit/page'
    ]
]

理想情况下,我会使用它mysite.com/kit/[username]来避免与以某种方式与任何用户名匹配的任何其他控制器发生冲突,并使用'kit/<id:\w+>' => 'kit/page'.

注意:\w+匹配任何单词字符(等于[a-zA-Z0-9_]),所以如果您的用户名可以允许任何其他字符,您可能必须更新模式,例如允许-您应该将规则更改为'<id:[\w\-]+>' => 'kit/page'


推荐阅读