THINKPHP下配置pathinfo出现尾巴带斜杠和不带斜杠的差异解决方案,实际上我还没研究清除怎么回事,但是这个问题困扰了很久,之前解决过一次,但是TP的版本不断升级 调试一次很痛苦的,今天终于通过最早期NGINX+THINKPHP的配置文档中找到差异化。
基本是有两种解决方案,如果你有时间的话可以自己尝试第一种方案。就是修改TP底层代码,之前修改过 没记录忘记了。调试的方式很简单就是,不断打印$_server的值,然后判断TP中的路由解析代码,调试到识别model和controller name时候那段就是需要进行改进的地方,回头想想那个并不不是好办法
其二是修改配置,这个也是踩到狗屎,我并还不了解什么原因导致,只知道因为TP底层在识别SERVER的相关信息时候的一个错误,源头的代码如下
需要修改nginx/conf/pathinfo.conf
#set $real_script_name $fastcgi_script_name;
#if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
#set $real_script_name $1;
#set $path_info $2;
#}
set $real_script_name $uri;
set $path_info "";
if ($uri ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
其中被我注释掉部分就是原来的代码,下方是我测试正常的代码,大家可以看出来唯一的区别
$real_script_name,在TP里面其实也是对这个值的获取进行修改即可,问题就在于$uri 和 $fastcgi_script_name 。如果需要将尾巴识别为自动带有index,就需要将
$fastcgi_script_name修改为$uri
版权属于:
转载时必须以链接形式注明原始出处及本声明。