360网站管家 发表于 2015-10-13 12:43:51

配置Nginx服务器支持thinkPHP的pathinfo功能

对于thinkphp框架项目的访问格式有多种,其中pathinfo是默认的基本访问格式,格式为:http://hostname:port/index.php/模块名/action名/参数1/参数1的值/pathinfo其实就是一个参数,可以通过$_SERVER['PATH_INFO']获得,thinkphp框架通过解析它来找到对应的模块和方法。
apache服务器默认是支持pathinfo的,但是nginx服务器默认不支持这种格式,需要进行配置,配置方式如下:
1. 找到ngingx的配置文件nginx.conf
在server里的location项,
修改前为:


location ~ \.php$ { 注:去掉本行的$ 字符
            root         html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_indexindex.php;
            fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
            include      fastcgi_params;
            注:下面加上一些配置语句
}


修改后为:


location ~ \.php {
            root         html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_indexindex.php;
            fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
            include      fastcgi_params;
            #定义变量 $path_info ,用于存放pathinfo信息
            set $path_info "";
            #定义变量 $real_script_name,用于存放真实地址
            set $real_script_name $fastcgi_script_name;
            #如果地址与引号内的正则表达式匹配
            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
                  #将文件地址赋值给变量 $real_script_name
                  set $real_script_name $1;
                  #将文件地址后的参数赋值给变量 $path_info
                  set $path_info $2;
            }
            #配置fastcgi的一些参数
            fastcgi_param SCRIPT_NAME $real_script_name;
            fastcgi_param PATH_INFO $path_info;
    }

2. 编辑php.ini文件
   注释掉配置项cgi.fix_pathinfo(前面加;)
3.重启phpcgi 和 nginx
页: [1]
查看完整版本: 配置Nginx服务器支持thinkPHP的pathinfo功能