周梦康 发表于 2014-06-20 3255 次浏览 标签 : Nginx

今天装别人的开源程序,发现地址是pathinfo模式,地址类似于:http://test.com/index.php/public/login

由于我的服务器环境是使用的 lnmp 集成环境,默认是不支持pathinfo模式的访问方式的。

下面就是如何使得 lnmp 集成环境包里的 nginx 支持 pathinfo

1、创建一个pathinfo.conf文件

注意直接复制的话,可能因为 windows 下和 linux 下的换行符不同,直接放服务器上可以会导致语法错误,请先复制,然后通过编辑器做格式转换操作

set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "(.+?\.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;

2、将该文件放到/usr/local/nginx/conf/目录下

因为在 lnmp 集成环境里面默认的包含路径就是该目录,如果非要放在别处,在下面进行include的时候写全路径。

3、将虚拟主机配置文件里的location ~ .*\.(php|php5)?$替换为location ~ .*\.php

因为默认是以.php或者.php5结束一个动态地址,所以以$结束,而我们现在一般都是 .php 的文件,所以可以忽略 .php5 ,又因为我们是配置 pathinfo ,所以不能是 .php 作为结束,所以去掉$

4、在include fcgi.conf;下面添加一行include pathinfo.conf;

让 lnmp 集成环境包里的 nginx 支持 pathinfo 模式

5、修改 PHP 配置文件,开启 pathinfo

lnmp 集成环境php.ini的全路径是/usr/local/php/etc/php.ini,自己配置的系统可以通过phpinfo()查看配置信息。

cgi.fix_pathinfo=0修改为cgi.fix_pathinfo=1

cgi.fix_pathinfo=1

6、重启nginxphp-fpm

评论列表