我目前已经设置了一个与 uri 匹配的 Nginx 位置块,当且仅当它以/auth/test.php
. 唯一的匹配是http://host/auth/test.php
.
location ~ ^/auth/test\.php$ {
# Use try files or the if statement below. try_files is preferred
# If the original URI ($uri) does not resolve into an existing file or directory, a 404 error is returned
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$; #
fastcgi_param USERNAME $arg_username;
fastcgi_param PASSWORD $arg_password;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
}
我的理解是,当 Nginx 尝试匹配位置块时,查询参数不起作用。test.php
当 uri 的形式为 时,会处理我的脚本http://host/auth/test.php?username=blah&password=blah
。但是,如果我尝试不带查询参数 () 的 uri,http://host/auth/test.php
则脚本test.php
会被请求它的人下载,这并不理想。有没有办法让 Nginx 不处理这种类型的 uri 请求?我认为该try_files
指令会处理这种情况,但显然不是。谢谢。