我当前正在使用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>',
],
],
答案 0 :(得分:3)
您正在使用带有令牌\w+
的正则表达式,该令牌与任何单词字符(等于[a-zA-Z0-9_]
)匹配,并且不包含句点或.
。
因此将其更改为[\w\.]+
,现在您的规则将是
me/<id:[\w\.]+>' => 'kit/page',
答案 1 :(得分:0)
将[-a-zA-Z0-9 _。] +代替\ w +
示例:
'me/<id:[-a-zA-Z0-9_.]+>' => 'kit/page',