Рейтинг:1

Nginx отключает перенаправление https для 404+http uri

флаг jp

У меня есть перенаправление HTTPS в nginx.conf

  1. Но если запрошенный URI - это HTTP и 404 - мне не нужна переадресация. Есть ли решение для этой конкретной конфигурации?

  2. Также есть возможность отключить редирект HTTPS + www для 404 ссылок типа http://www.test.com

  3. Если пункт 1 или 2 не может быть выполнен, могу ли я жестко закодировать список URL-адресов 404 с помощью nginx, чтобы полностью отключить для них любое перенаправление и отображать только страницу 404? (HTTPS и www)

WordPress + Nginx (+Vestacp)

сервер {
    слушать х.х.х.х: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 ошибка;
    вернуть 301 https://test.com$request_uri;
}
флаг sv
Это можно сделать для статического контента. Для динамического приложения, такого как WordPress, это может быть невозможно. Какое приложение или тип приложения вы используете в этом конкретном случае? Статическая или динамическая?
allwillburnn avatar
флаг jp
Вордпресс + Нгинкс
Рейтинг:0
флаг sv

Добро пожаловать в 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.

Надеюсь, это поможет.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.