nginx支持pathinfo模式访问

7 篇文章 0 订阅

近日有个需求,要nginx支持pathinfo模式,就是可以访问到aa.com/index.php/aa/xx/cc.html这种的链接,nginx默认不支持pathinfo模式,所以需要修改配置。

 

修改nginx的匹配php 的配置,原来的location是location ~ .*\.(php|php5)?$  这样的url匹配到以.php结尾就不看后续路径了,

比如:aa.com/index.php/aa/xx/cc.html 就会认为index.php是目录了,如果是以index.php结尾的话就是处理php文件了,所以我们要将配置文件改成下面这样,这样的话既可以解析php文件,又能执行aa.com/index.php/aa/xx/cc.html这样而不会把index.php当成目录

    location ~ \.php/?.*$ {
        root            html;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        include fastcgi_params;

 

       #定义变量,fastcgi_script_name2,值为脚本名

        set $fastcgi_script_name2 $fastcgi_script_name;

      #判断脚本名是否包含.php
        if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {

      #是包含的情况下把.php的全名,例如index.php赋值变量fastcgi_script_name2
            set $fastcgi_script_name2 $1;  

      #然后把index.php后面的内容赋值给path_info
            set $path_info $2;
        }

        #自定义的变量
        fastcgi_param   PATH_INFO $path_info;

       #脚本请求文件路径    html/index.php
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name2;

       #脚本名index.php
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name2;
    }

 

当然,php如果没开启也需要开启,修改php.ini将cgi.fix_pathinfo=1 的注释去掉,如果没注释=0的话也不行,需要改成1支持。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值