Чи може Apache умовно виконати перезапис із користувацького заголовка http?


12

У мене є сервер apache за балансиром навантаження (простим Amazon). Я хочу перенаправити будь-який вхідний трафік, який не є 443 до 443. Я вважаю за краще використовувати його лише один віртуальний хост apache. Тому я намагаюся виявити це, якщо заголовок HTTP_X_FORWARDED_PORT не є 443.

Я перевірив документи RewriteCond і він працює лише з обмеженим набором заголовків HTTP.

В основному те, що я роблю, це таке:

<VirtualHost *:80>
        ServerName www.example.com

        RewriteEngine On
        RewriteCond %{HTTP_X_FORWARDED_PORT} !=443
        RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

        ....
</VirtualHost>

Але RewriteCond не розпізнає HTTP_X_FORWARDED_PORT.

Чи є якийсь інший спосіб досягти цього (лише з одним VirtualHost)? (якийсь тип вхідної перевірки заголовка?)

Спасибі, Ленс

Відповіді:


13

Трохи далі RewriteCondдокумент:

%{HTTP:header}, де заголовком може бути будь-яке ім'я заголовка HTTP MIME

Отже, ви можете це зробити, тільки не в такому ж вигляді, як попередньо вилучені заголовки.

Спробуйте це:

RewriteCond %{HTTP:X-Forwarded-Port} !=443
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

1
Ще один приклад з IP-адресою в заголовку, переданому SiteLock CDN:RewriteCond %{HTTP:X-Forwarded-For} !=123.45.67.89
Ліам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.