php中斜杆无法识别,THINKPHP3.1以下版本中识别URL尾部是否以斜杆结尾/的错误

上一篇说的是THINKPHP3.2.3版本遇到的URL尾部是否以斜杆结尾/的错误,同样的问题出现在了THINKPHP的其他版本中,但是情况又有所不同

如:http://www.yoff.cn/Test

该情况显示正常,会自动识别到Test模块下的index方法

而:http://www.yoff.cn/Test/

该情况显示错误,会提示404错误

调试的方式是在入口位置加入 var_dump($_SERVER);die(); 以此来打印出每个位置不同的结果

最后发现

http://www.yoff.cn/Test   在$_SERVER['PATH_INFO']显示为/Test

http://www.yoff.cn/Test/   在$_SERVER['PATH_INFO']显示为/Test/index.php

就是这个简单的区别,在/Thinkphp/Lib/Core/Dispatcher.class.php中的第93行左右

if (!empty($_SERVER['PATH_INFO'])) {

有个判断针对$_SERVER['PATH_INFO']不为空情况本来是要寻找对应的方法名,结果把index.php整个作为方法名,导致了程序的报错。

初步用了最简单的方式解决,在该行代码上方加入一个判断来避免这个错误

if(strrchr($_SERVER['PATH_INFO'],"/index.php")=="/index.php"){

$_SERVER['PATH_INFO'] = str_replace("/index.php", "", $_SERVER['PATH_INFO']);

}

发现PHP5.3之前的版本并不会出现这个问题,也许是版本升级后修改了一些规则,希望以后大家也能找到这个结果,避免再遇到这个坑爹的问题了

版权属于:

转载时必须以链接形式注明原始出处及本声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值