nginx не выдаёт страницу для 404 ошибки

Сенатор
На сайте с 03.03.2014
Offline
46
1006

На сервере nginx+php-fpm

Пытаюсь сделать чтобы при вхождении в URL "stts" nginx отдавал 404, но не стандартную, а шаблонную страницу.

Делаю так:


if ($request_uri ~* "stts") {
return 404;
}

При открытии https://site.ru/2stts4.html

404 отдаётся, но стандартный, а не шаблонная страница, которая прописана в nginx:

   error_page 404 /404.html;

Подскажите пожалуйста почему так и как исправить?

Sly32
На сайте с 29.03.2012
Offline
302
#1

может путь к шаблону неверно указан?

SocFishing
На сайте с 26.09.2013
Offline
118
#2

в nginx впишите в секцию. и потом ребутните nginx php-fpm

server {
error_page 404 = /404.php;

для корня

★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
Оптимизайка
На сайте с 11.03.2012
Offline
396
#3

секция существует?

location = /404.html {

root /где/они/лежат;

}

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
Сенатор
На сайте с 03.03.2014
Offline
46
#4

Ничего не помогло :(

Sly32, путь указан верно.

SocFishing, не помогло, всё также, nginx и php-fpm перезапустил.

Оптимизайка, вот:


server {
listen 80;
server_name site.ru;
root /home/user/www/site.ru;
index index.php index.html index.htm;
error_page 404 = /404.html;
if ($request_uri ~* "stts") {
return 404;
}
...

по пути /home/user/www/site.ru расположен файл 404.html

Причём если открыть URL site.ru/ne_sushestvuet - которого не существует, но без вхождения 'stts', ВСЁ ок отображается шаблонная 404, а если вхождение 'stts' есть, тогда обычная 404 Not Found nginx/1.2.1

HM
На сайте с 14.01.2012
Offline
223
#5

Сенатор, http://nginx.org/ru/docs/http/ngx_http_fastcgi_module.html#fastcgi_intercept_errors пробовали?

---------- Добавлено 14.03.2019 в 18:58 ----------

Сенатор:
if ($request_uri ~* "stts") {
return 404;
}

А вообще, почему это не сделать отдельным локейшном?

Сенатор
На сайте с 03.03.2014
Offline
46
#6
hakuna matata:
Сенатор, http://nginx.org/ru/docs/http/ngx_http_fastcgi_module.html#fastcgi_intercept_errors пробовали?

---------- Добавлено 14.03.2019 в 18:58 ----------


А вообще, почему это не сделать отдельным локейшном?

intercept_errors пробовал включать не помогло.

Сделал через location, сработало.

Спасибо!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий