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

Thinkphp中如何表达MYS...

Thinkphp 的文档经常不够完整的表达MYSQL的各种组合,很多东西需要被尝试后才能知道,笔者就遇到过一个问题,MYSQL查询语句中有个表达式is not ...

阅读全文

thinkphp5 自定义命令行...

thinkphp5 自定义命令行中input传值问题,官方文档只列出了如何生成命令行,但是针对input的传值没有找到任何说明文档,因此本文主要针对inp...

阅读全文

Thinkphp下的Redis拓...

一、概述 Redis是一个NoSQL数据库,由于其数据类型的差异,所以要在MVC框架中实现CURD操作,比较繁锁。事实上在ThinkPHP框架...

阅读全文