Yii2 UrlManager打破期间

问题描述 投票:0回答:2

我目前正在使用yii2 urlManager创建一个漂亮的URL。它接收一个参数,然后根据它查找用户。不幸的是,如果参数包含句点,它将根本不运行并重定向到404页面。

所以,

mysite.com/me/jbroad 

效果很好,但是

mysite.com/me/j.broad 

返回404页面。

这是我的网址管理员代码

'urlManager' => [
     'enablePrettyUrl' => true,
     'showScriptName' => false,
     'rules' => [
         '' => 'site/index',
         'me/<id:\w+>' => 'kit/page',
         'generate/<id:\w+>' => 'kit/generate',
          '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
     ],
],
yii2
2个回答
3
投票

你使用正则表达式与令牌\w+匹配任何单词字符(等于[a-zA-Z0-9_]),不包括句号或.

所以把它改成[\w\.]+,现在你的规则就是

me/<id:[\w\.]+>' => 'kit/page',

0
投票

而不是\ w +,放[-a-zA-Z0-9 _。] +

例:

    'me/<id:[-a-zA-Z0-9_.]+>' => 'kit/page',
© www.soinside.com 2019 - 2024. All rights reserved.