O Apache pode realizar condicionalmente uma reescrita de um cabeçalho http personalizado?

11

Eu tenho um servidor apache atrás de um balanceador de carga (simples amazon). Eu quero redirecionar qualquer tráfego de entrada que não é 443 para 443. Eu preferiria usar apenas um host virtual apache. Então, estou tentando detectar se o cabeçalho HTTP_X_FORWARDED_PORT não é 443.

Eu verifiquei os documentos RewriteCond e ele só funciona com um conjunto limitado de cabeçalhos HTTP.

Basicamente, o que estou fazendo é isto:

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

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

        ....
</VirtualHost>

Mas o RewriteCond não reconhece o HTTP_X_FORWARDED_PORT.

Existe alguma outra maneira de fazer isso (com apenas um VirtualHost)? (algum tipo de verificação de cabeçalho de entrada?)

Obrigado, Lance

    
por Lance Rushing 07.02.2012 / 19:17

1 resposta

12

Um pouco mais abaixo no documento RewriteCond :

%{HTTP:header}, where header can be any HTTP MIME-header name

Então, você pode fazer isso, mas não da mesma forma que os cabeçalhos pré-extraídos.

Tente isto:

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