nginx开启pathinfo模式的两种方式

来源:互联网 发布:淘宝店家培训 编辑:程序博客网 时间:2024/05/21 10:28

*可能有人要问为什么apache不会出现这个问题?

apache一般是以模块的方式运行php,apache可以对$_SERVER['PATH_INFO']的值进行设置,不需要另外配置。

一、新版本的nginx也可以使用fastcgi_split_path_info指令来设置PATH_INFO,旧的方式不再推荐使用,在location段添加如下配置。

在location ~ .PHP下加入如可字段即可

fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;  fastcgi_param PATH_INFO $fastcgi_path_info;  fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;  
重启nginx即可

二、打开nginx.conf配置文件,找到类似如下代码的地方(不同版本的nginx可能稍有不同,但大体都差不多)

location ~ \.php$  {                  #原有代码  } 

将其改成:

#去掉$是为了不匹配行末,即可以匹配.php/,以实现pathinfo  location ~ \.php          {                  #原有代码                                   #定义变量 $path_info                  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_FILENAME $document_root$real_script_name;                  fastcgi_param SCRIPT_NAME $real_script_name;                  fastcgi_param PATH_INFO $path_info;          }  





0 0
原创粉丝点击