php路由别名,ThinkPHP5路由别名无效的问题

ThinkPHP5路由别名定义无效,route.php文件定义如下:

return [

'admin' => 'admin/Index/index',

'admin/login' => 'admin/Login/index',

'admin/logout' => 'admin/Login/logout',

'__alias__' =>  [

'admin/activity'  =>  'admin/Activity',

],

];

模板中url生成代码:

{:url('admin/Activity/index')}

生成的url:

http://localhost/admin/activity/index

按照官方手册提示,使用路由别名后,可以批量定义一系列的路由规则,此时访问admin模块的Activity控制器的所有操作都可以直接访问,比如:

http://localhost/admin/activity/index => admin/Activity/index

http://localhost/admin/activity/add => admin/Activity/add

然而事实上在我的代码中路由别名定义并未生效,访问http://localhost/admin/activity/index指向的是默认的admin/Index/index,仔细查看了一下tp5的官方手册找到了ThinkPHP5路由别名无效的原因。

在ThinkPHP5中路由默认规则匹配检测的时候只是对URL从头开始匹配,只要URL地址包含了定义的路由规则就会匹配成功,如果希望完全匹配,可以在路由表达式最后使用$符号。

而在我的路由配置文件中,先定义了 'admin' => 'admin/Index/index',规则,而这个规则只要URL地址并不是完全匹配,所以只要URL地址包含了定义的路由规则就会匹配成功,因此访问http://localhost/admin/activity/index指向的是默认的admin/Index/index。

修改一下路由匹配规则,加上完全匹配设置即可,规则如下:

return [

'admin/$' => 'admin/Index/index',//加上/$即可

'admin/login' => 'admin/Login/index',

'admin/logout' => 'admin/Login/logout',

'__alias__' =>  [

'admin/activity'  =>  'admin/Activity',

],

];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值