Apache può eseguire in modo condizionale una riscrittura da un'intestazione http personalizzata?


12

Ho un server Apache dietro un bilanciamento del carico (semplice Amazon). Voglio reindirizzare tutto il traffico in entrata che non va da 443 a 443. Preferirei usare solo un host virtuale apache. Quindi sto cercando di rilevare che se l'intestazione HTTP_X_FORWARDED_PORT non è 443.

Ho controllato i documenti RewriteCond e funziona solo con un set limitato di intestazioni HTTP.

Fondamentalmente quello che sto facendo è questo:

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

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

        ....
</VirtualHost>

Ma RewriteCond non riconosce HTTP_X_FORWARDED_PORT.

C'è un altro modo per ottenere questo risultato (con un solo VirtualHost)? (qualche tipo di controllo dell'intestazione in arrivo?)

Grazie Lance

Risposte:


13

Un po 'più in basso nel RewriteConddocumento:

%{HTTP:header}, dove header può essere qualsiasi nome HTTP MIME-header

Quindi, puoi farlo, ma non nella stessa forma delle intestazioni preestratte.

Prova questo:

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

1
Un altro esempio con un indirizzo IP in un'intestazione passato da SiteLock CDN:RewriteCond %{HTTP:X-Forwarded-For} !=123.45.67.89
Liam,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.