nginx重写后,却没有经过php-cgi处理?

泷涯SY 发布于 2014/08/10 14:37
阅读 467
收藏 1

【Gopher China万字分享】华为云的Go语言云原生实战经验!>>>

Ubuntu12.04,nginx和php都是apt-get安装的,nginx配置如下:



server {

        listen   80;

        root /var/www;

        index index.php index.html index.htm;

        location / {

        }

        location /api/ {

                rewrite ^/api/(.+)/(.+)\.json([\?]?)(.*)$ /WebAPI/code/index.php?m=$1&a=$2&$4 break;

        }

         location ~ \.php$ {

                fastcgi_pass 127.0.0.1:9000;

                fastcgi_index index.php;

                fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;

                include fastcgi_params;

        }

}

其中rewrite是打算把/api/member/login.json?id=1这样的URL重写到/WebAPI/code/index.php?m=member&a=login&id=1,测试的时候,打开/api/member/login.json,却出现了下载提示。下载后查看,发现是/WebAPI/code/index.php的内容

直接打开/WebAPI/code/index.php,nginx会交给php-cgi处理(正常的),但是为什么经过nginx重写,就没有交给php-cgi处理了?

加载中
0
淡定的wo
淡定的wo
location /api/ {

                rewrite ^/api/(.+)/(.+)\.json([\?]?)(.*)$ /WebAPI/code/index.php?m=$1&a=$2&$4 break;

        } 

修改为:

       rewrite ^/api/(.+)/(.+)\.json([\?]?)(.*)$ /WebAPI/code/index.php?m=$1&a=$2&$4 break;

原因请看nginx官方文档关于location的说明。



泷涯SY
泷涯SY
好了,谢谢
泷涯SY
泷涯SY
是直接放在外面?
返回顶部
顶部