nginx开启pathinfo模式的两种方式

*可能有人要问为什么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;  
        }  





  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值