Nginx php-fpm、try_files 和 GET 参数

Nginx php-fpm、try_files 和 GET 参数

我在使 nginx 配置正常工作时遇到了问题。似乎一切正常,但我的 php 脚本没有收到 GET 参数。我得到的与我的问题最相关的链接是这个nginx + php-fpm-我的 $_GET 参数在哪里? 但我的配置略有不同,简单地将 $query_string 添加到最后一个 try_files 指令根本不起作用。

这是我的配置:

server {
    server_name  api.example.com;
    root   /home/example/api/web;

    location /v2 {
        alias /home/example/api/v2/web;
        try_files $uri /v2/index.php;
        location ~* \.(js|css|less|png|jpg|jpeg|gif|ico|woff|ttf|svg|tpl)$ {
            expires 24h;
            access_log off;
        }
        location /v2/index.php {
            fastcgi_index  index.php;
            fastcgi_pass php56;
            fastcgi_split_path_info       ^/v2/(.+\.php)(.*)$;
            fastcgi_param SCRIPT_FILENAME  /home/example/api/v2/web/$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
            fastcgi_param SCRIPT_NAME /v2/index.php;
        }
    }

}

然后使用此配置,/v2URL 看不到 GET,而/v2/index.php可以看到。如果我将 try_files 行更改为try_files $uri /v2/index.php$query_string;/v2URL 只会显示 404。

答案1

好的,有位好心人帮我解决了这个问题。以下是工作配置:

   location /v2 {
        alias /home/example/api/v2/web;
        try_files $uri $uri/ /v2/index.php;
        location ~* \.(js|css|less|png|jpg|jpeg|gif|ico|woff|ttf|svg|tpl)$ {
            root /home/example/api/v2/web;
            expires 24h;
            access_log off;
        }
        location ~* /(.*) {
            include /etc/nginx/fastcgi_params;
            fastcgi_index  index.php;
            fastcgi_pass php56;
            fastcgi_param SCRIPT_FILENAME  /home/example/api/v2/web/index.php;
            fastcgi_param SCRIPT_NAME /v2/index.php;
        }
    }

相关内容