Как при определённом URL отдавать ошибку 404 в nginx

Проблема в следующем, есть URL (адрес конкретной страницы сайта), при обращении по которому нужно отдавать ошибку 404, сделать это нужно на уровне nginx.
  • Вопрос задан
  • 5799 просмотров
Решения вопроса 1
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
location =/someuri { 
return 404;
}


Всё, что после ? - это $args, работать с ними через location нельзя, только через if.

То есть если вам нужно ограничить доступ к странице /someuri?page=1, то придется делать так:
location =/someuri { 
if ($arg_page = 1) { return 404; }
# или (если вообще искать цифру 1 во всей части ссылки после ? 
if ($arg ~* 1) {return 404; }
<здесь вставляем конфигурацию для обработки запроса к /someuri без page=1 или с другими аргументами, например строки про proxy_pass - скорее всего нужно скопировать из location />
}


Если подойдет вариант "заблокировать любые запросы с ?page=1", то if ($arg_page = 1) { return 404; } можно вставить прямо в location / { } (перед остальными частями конфига).

location =/blah, соответственно, нужно ставить для того, чтобы матчить условие на точные uri, а не на /blahтутлюбойтекст
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
BuriK666
@BuriK666 Куратор тега Nginx
Компьютерный псих
location /404forever {
return 404;
}
Ответ написан
Stalk-p
@Stalk-p Автор вопроса
А если в URL есть вопросительны знак? Подскажите, что делать. При его отсутствии всё работает, с ним - нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы