Apache 2.2 – Custom HTTP Header & Redirect
Derniérement j’ai eu besoin de fournir une ressource differente en fonction du protocole utilisé.
Un fichier robots.txt pour autoriser l’indéxation sur HTTP et le refuser sur HTTPS.
Le soucis, c’est que notre serveur HTTP est derrière un reverse proxy HTTPS to HTTP (Pound), et qu’en l’état le serveur HTTP n’a pas moyen de savoir si l’utilisateur a demandé une connexion SSL ou non.
Pour pouvoir réaliser ce besoin, nous injectons un header HTTP au niveau du reverse proxy Pound : X-Forwarded-Proto qui contient la valeur “https”
1 2 3 4 5 6 7 8 | ListenHTTPS xHTTP 2 Address 1.2.3.4 Port 443 Cert "/etc/ssl/certs/private/domain.tld.pem" HeadRemove "X-Forwarded-Proto" AddHeader "X-Forwarded-Proto: https" End |
Maintenant,
Le serveur HTTP peut savoir si l’utilisateur a établit une connexion sécurisé ou non.
Nous réalisons donc une ré-écriture d’URL en fonction de ce Custom HTTP Header.
1 2 3 | RewriteCond %{HTTP:X-Forwarded-Proto} ^https$ RewriteCond %{REQUEST_URI} ^/robots.txt$ RewriteRule ^(.*)$ /robots_https.txt [L] |