我有 Nginx 和下一个 URl,但我无法访问它:
http://www.example.com/file.php?parameter=value
目前我已经设置了 Nginx 规则,阻止对给定示例的访问。
我如何允许这个特定的 URL 并使其正常运行?
location http://www.example.com/file.php?parameter=value {
try_files $uri $uri/ /file.php?$args;
}
或者:
location ~* http://www.example.com/file.php?parameter=value {
allow all;
}
也许是这样的?:
~ "^parameter=value"
这个是特定的,我无法访问它。我收到 404/405 错误。这是否意味着它不存在或之前在某处被阻止了?
谢谢。
答案1
如果您只想允许单个 URL 带有特定参数,则需要做一些额外的操作,而不仅仅是简单的代码块。这是因为指令location
中只能匹配规范化的 URI 。location
您可以尝试这样的操作:
location /file.php {
if ($arg_parameter = "value") {
try_files /file.php$is_args$args =404;
}
return 404;
}
此location
块匹配 URI /file.php
(域通过指令匹配server_name
)。然后我们测试parameter
参数是否为文本value
。如果是,则我们将处理传递给 PHP 文件。
否则我们将返回错误代码 404。
在 PHP 脚本中执行此条件检查可能会更容易。