Ho un server web dietro un bilanciamento del carico.
Devo aggiungere un reindirizzamento condizionale al mio .htaccess per visualizzare una pagina di manutenzione ogni volta che mettiamo il sito offline per manutenzione. Questa parte è semplice:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.php [R=302,L]
Tuttavia, voglio aggiungere a condizione che se l'indirizzo IP del visitatore è il mio, non mi reindirizzerà alla pagina di manutenzione e che sarei in grado di vedere e testare il sito come se fosse online. Questa parte è normalmente anche semplice:
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]
Tuttavia, poiché il mio server Web si trova dietro un bilanciamento del carico, REMOTE_ADDR
viene risolto nell'indirizzo IP interno del server Load Balance.
Come posso modificarlo per cercare l'indirizzo IP inoltrato? So che in PHP puoi usare $_SERVER['HTTP_X_FORWARDED_FOR']
per ottenere l'indirizzo IP inoltrato. Ho provato alcune cose in .htaccess
ma senza fortuna:
%{X_FORWARDED_FOR}
%{HTTP:X_FORWARDED_FOR}
%{HTTP_X_FORWARDED_FOR}
SOLUZIONE
Ho ottenuto quanto segue per funzionare:
%{HTTP:X-FORWARDED-FOR}
.jpe
o .jp
file?