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