yii2 UrlManager 的自定义rules的bug,无法以“/”结尾

weixin_38104933 2019-09-11 03:46:05
假如我想实现这样的,访问 'info/<type:(area|cat)>-<v1:\d+>-<v2:\d+>-<v3:\d+>/' => 'info/list', , 我发现当我结尾加了那个 /,他会提示报错 404 NotFound。仔细跟踪代码,生成的匹配规则是: #^info/(?P<type>(area|cat))-(?P<v1>\d+)-(?P<v2>\d+)-(?P<v3>\d+)/(?P<page>(\d+))$#u,结尾的斜杠在 https://github.com/yiisoft/yii2/blob/master/framework/web/UrlRule.php#L194 这一行被强制去掉,如果我不要结尾的斜杠,就可以访问正常。 $this->pattern = '#^' . trim(strtr($this->_template, $tr), '/') . '$#u'; 我现在需要实现的是必须以 / 斜杠结尾才可以访问。yii2却因为trim了两边的,应该改成 ltrim()
...全文
28 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38121869 2019-09-11
  • 打赏
  • 举报
回复
找到解决办法了,例如有条规则 'info/<type:(area|cat)>-<v1:\d+>-<v2:\d+>-<v3:\d+>/' => 'info/list' 修改成 'info/<type:(area|cat)>-<v1:\d+>-<v2:\d+>-<v3:\d+>/?' => 'info/list', 修改源码有个不好的地方就是升级带来问题
weixin_38129823 2019-09-11
  • 打赏
  • 举报
回复
'info/<type:(area|cat)>-<v1:\d+>-<v2:\d+>-<v3:\d+>\/' => 'info/list',

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧