Назад | Перейти на главную страницу

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

У меня есть сервер 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)? (какая-то проверка входящего заголовка?)

Спасибо, Лэнс

Чуть дальше по RewriteCond документ:

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

Таким образом, вы можете сделать это, но не в такой форме, как предварительно извлеченные заголовки.

Попробуй это:

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