J'ai un serveur Web derrière un équilibreur de charge.
Je dois ajouter une redirection conditionnelle à mon .htaccess afin d'afficher une page de maintenance chaque fois que nous mettons le site hors ligne pour maintenance. Cette partie est simple:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.php [R=302,L]
Cependant, je veux ajouter à condition que si l'adresse IP du visiteur est la mienne, elle ne me redirige pas vers la page de maintenance et que je puisse voir et tester le site comme s'il était en ligne. Cette partie est normalement aussi simple:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^11\.111\.111\.111
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.php [R=302,L]
Cependant, comme mon serveur Web se trouve derrière un équilibreur de charge, il REMOTE_ADDR
est résolu en l'adresse IP interne du serveur Load Balance.
Comment puis-je modifier cela pour rechercher l'adresse IP transférée? Je sais qu'en PHP, vous pouvez utiliser $_SERVER['HTTP_X_FORWARDED_FOR']
pour obtenir l'adresse IP transférée. J'ai essayé quelques trucs dans le .htaccess
mais pas de chance:
%{X_FORWARDED_FOR}
%{HTTP:X_FORWARDED_FOR}
%{HTTP_X_FORWARDED_FOR}
SOLUTION
J'ai obtenu le travail suivant:
%{HTTP:X-FORWARDED-FOR}
.jpe
ou .jp
fichiers?