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

by 尘缘 on 三月 28th, 2011 // Filed Under → ThinkPHP

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

杯具就此开始。

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

其次是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的解决办法”,但请保留本文出处和版权信息。
作者:尘缘,QQ:130775,来源:http://www.4wei.cn/archives/1001174

有 3 条评论啦

Posted on 2011年06月4号 at 22:40:47

无极限 :

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

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

Posted on 2011年07月18号 at 12:23:24

姚博 :

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

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

Posted on 2012年02月2号 at 18:18:52

yum2014 :

前台的没有问题,访问后台管理地址就报错了。比如访问http://www.domain.com/Admin/
跳转到
http://www.domain.com/Admin/index.php/Public/login继而报告地址不存在。。。



走过路过,千万不要飞过,那是鸟人: