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也可以配置

发表评论

回复 _wuhui 取消回复

评论列表(4)

  • _wuhui

    2012.10.12 14:10

    ubuntu 12.04+nginx 1.19+thinkphp 3.0 使用此方法还是不行~求解

    回复
  • yum2014

    2012.2.2 18:02

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

    回复
  • 姚博

    2011.7.18 12:07

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

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

    回复
  • 无极限

    2011.6.4 22:06

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

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

    回复