У меня есть 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. Означает ли это, что его не существует или он где-то ранее заблокирован?
Спасибо.
Если вы хотите разрешить только один 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
). Затем мы проверяем, является ли аргумент параметра
текстовым значением
. Если это так, мы передаем обработку в файл PHP.
В противном случае мы возвращаем код ошибки 404.
Возможно, вам будет проще выполнить проверку этого условия в вашем сценарии PHP.