我目前正在使用Vagrant设置一台本地开发机器.一切都按预期运行,期望查询参数不会传递给子页面上的PHP.
这意味着在www.example.com/?a=b上,查询参数是可访问的,但在www.example.com/subpage/?a=b上则不然.
我发现使用Google解决此问题的一般回复是修改try_files指令,但这对我不起作用.我还检查了request_order& PHP.ini中的variables_order – 一切都在那里正确设置.
这是我的配置:
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用于查询字符串后面的问号.
原文链接:https://www.f2er.com/nginx/435486.html这是最后一个组合.
try_files $uri $uri/ /index.PHP$is_args$query_string;
还要确保你已经设置好了
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_split_path_info ^(.+\.PHP)(/.+)$;
然后传递给它fastcgi;
fastcgi_pass 127.0.0.1:9000;