我在使 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;
}
}
}
然后使用此配置,/v2
URL 看不到 GET,而/v2/index.php
可以看到。如果我将 try_files 行更改为try_files $uri /v2/index.php$query_string;
,/v2
URL 只会显示 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;
}
}