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也可以配置
ubuntu 12.04+nginx 1.19+thinkphp 3.0 使用此方法还是不行~求解
前台的没有问题,访问后台管理地址就报错了。比如访问http://www.domain.com/Admin/
跳转到
http://www.domain.com/Admin/index.php/Public/login继而报告地址不存在。。。
我想问一下您,apache的PathInfo到底是什么用的,写php程序时什么时候会用到它?
这个问题确实很难弄. 按照这个方法配置, 在TP 下面 他对 绝对路径支持的不是很好