Nginx+ThinkPHP不支持PathInfo的解决办法

应集团要求,公司的服务器全收到集团机房统一管理了,失去了服务器的管理配置权限。

杯具就此开始。

首先要解决文件大小写的问题。哥在开发的时候,比较注意大小写、文件名、相对路径的问题,程序整体迁移没有遇到任何问题。

其次是WebServer不支持PathInfo的问题。集团的运维同事,在所有服务器上都跑着Linux+Nginx,导致Apache开发的PathInfo模式出现艰难的迁移问题。

由于Nginx+Pathinfo有一定的不安全因素,要求开启PathInfo的请求被拒绝,找到TP论坛,发现官方的同志是这样解决问题的。

摘抄如下:

nginx 不支持pathinfo, 你可以自己配置一个pathinfo变量, 会有安全漏洞,你又要修复, 很麻烦。 nginx 最好是不要用pathinfo, thinkphp可以在不支持pathinfo的环境下用, 也同样能到达pathinfo效果。
配置方法:
1,nginx配置:
location / {
.....省略部分代码
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}

2,thinkphp配置
'URL_MODEL' => 2,

适用于很多不支持pathinfo的服务器环境 类似的配置在apache也可以配置

《Nginx+ThinkPHP不支持PathInfo的解决办法》有4个想法

  1. 我想问一下您,apache的PathInfo到底是什么用的,写php程序时什么时候会用到它?

    Pathinfo一般用来模拟伪静态,注意,是模拟伪静态。URL中可以只出现/,模拟出目录路径。

  2. 这个问题确实很难弄. 按照这个方法配置, 在TP 下面 他对 绝对路径支持的不是很好

    路由的设置和目录应该是无关的。这块的配置,Python和Ruby比PHP方便。

发表评论

电子邮件地址不会被公开。