Nginx和PHP-FPM:查询参数不会传递给PHP

前端之家收集整理的这篇文章主要介绍了Nginx和PHP-FPM:查询参数不会传递给PHP前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我目前正在使用Vagrant设置一台本地开发机器.一切都按预期运行,期望查询参数不会传递给子页面上的PHP.

这意味着在www.example.com/?a=b上,查询参数是可访问的,但在www.example.com/subpage/?a=b上则不然.

我发现使用Google解决此问题的一般回复修改try_files指令,但这对我不起作用.我还检查了request_order& PHP.ini中的variables_order – 一切都在那里正确设置.

这是我的配置:

@H_403_12@ server {
     listen                80;
     server_name           example.com www.example.com;
     root                  /var/www/public;

     location / {
         index   index.html index.htm index.PHP;
         try_files $uri $uri/ /index.PHP?$query_string;
         include /etc/Nginx/fastcgi_params;
     }

     location ~ \.PHP${
         fastcgi_pass 127.0.0.1:9000;
         fastcgi_index index.PHP;
         fastcgi_param SCRIPT_FILENAME $request_filename;
         include /etc/Nginx/fastcgi_params;
     }

     sendfile off;
}

因为我不太了解服务器设置和安装;管理,我在这里打砖墙,还有一些我还检查过的东西:

> $query_string在/ etc / Nginx / fastcgi_params中设置为fastcgi_param QUERY_STRING $query_string;这似乎对我来说是正确的.
> fastcgi_params的路径是正确的

由于它不在子页面上时工作,我现在怀疑位置块不匹配,但我真的不明白这是怎么回事 – 请帮忙.

最佳答案
您需要使用$is_args作为问号& $args或$query_string用于查询字符串后面的问号.

这是最后一个组合.

@H_403_12@try_files $uri $uri/ /index.PHP$is_args$query_string;

还要确保你已经设置好了

@H_403_12@fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_split_path_info ^(.+\.PHP)(/.+)$;

然后传递给它fastcgi;

@H_403_12@fastcgi_pass 127.0.0.1:9000;

猜你在找的Nginx相关文章