Добро пожаловать в ServerFault.
Но если запрошенный URI - это HTTP и 404 - мне не нужна переадресация. Является
есть ли решение для этой конкретной конфигурации?
Я не знаю, как это сделать. Я не уверен, возможно ли это вообще.
Также есть возможность отключить редирект HTTPS + www для 404
ссылки как http://www.test.com
Я не понимаю этот вопрос.
Если пункт 1 или 2 не может быть выполнен, могу ли я жестко закодировать список URL-адресов 404 с помощью
nginx, чтобы полностью отключить для них любое перенаправление и показывать только 404
страница? (HTTPS и www)
Это возможно. Предполагая, что у нас есть список файлов в /home/admin/web/test.com/web/404.conf
в следующем формате...
/о нас/ 404;
/о нас/ 404;
/свяжитесь с нами/ 404;
/свяжитесь с нами/ 404;
Вместо текста «404» у нас могло быть что угодно, кроме «0» (ноль).
Измененная конфигурация будет выглядеть так...
map $uri $allwillburnn { include /home/admin/web/test.com/web/404.conf; }
сервер {
слушать х.х.х.х:80;
имя_сервера test.com www.test.com;
корень /home/admin/web/test.com/web/;
индекс index.php index.html index.htm;
access_log /var/log/nginx/domains/test.com.log объединенный;
access_log /var/log/nginx/domains/test.com.bytes bytes;
error_log /var/log/nginx/domains/test.com.error.log ошибка;
если ($allwillburnn) { вернуть 404; }
вернуть 301 https://test.com$request_uri;
}
Объяснение: по умолчанию для любых URL-адресов, не перечисленных в вышеупомянутом 404.конф
файл, переменная с именем $allwillburnn
присваивается значение 0 (ноль) карта. В таком случае, если блок пропускается, что приводит к перенаправлению 301.
Для URL-адресов, перечисленных в 404.конф
файл, $allwillburnn
присваивается ненулевое значение. В этом случае, если блок анализируется, это приводит к ошибке 404.
Надеюсь, это поможет.