2012-04-19 12 views
26

Ho il seguente nel mio .htaccess per forzare il www negli URL:Apache mod_rewrite: forzare www solo se non in localhost

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

Come si applicano solo questo se non su localhost? C'è una specie di condizione se posso mettere? In questo momento, sto ricevendo qualcosa di simile: http://www.localhost/ ...

risposta

43

RewriteCond è già la tua "se-condizione". Basta aggiungere un altro:

RewriteCond %{HTTP_HOST} !=localhost 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
+4

Oppure utilizzare RewriteCond% {} REMOTE_ADDR 127.0.0.1 come alternativa!. – Jan

+5

RewriteCond% {REMOTE_ADDR}! = 127.0.0.1 per essere precisi! – George

+3

Se IPv6 è abilitato, localhost potrebbe risolversi in ':: 1', quindi potresti voler aggiungere:' RewriteCond% {REMOTE_ADDR}! = :: 1' –

11

ho aggiunto tutto questo:

RewriteCond %{HTTP_HOST} !=localhost 
RewriteCond %{HTTP_HOST} !=127.0.0.1 
RewriteCond %{REMOTE_ADDR} !=127.0.0.1 
RewriteCond %{REMOTE_ADDR} !=::1 
Problemi correlati