2012-04-19 12 views
26

Mam następujących w moim htaccess wymusić www w adresach URL:mod_rewrite: wymusić www tylko jeśli nie w localhost

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

Jak ubiegać się to tylko wtedy, gdy nie na localhost? Czy istnieje jakiś warunek, który mogę umieścić? Teraz otrzymuję coś takiego: http://www.localhost/ ...

Odpowiedz

43

RewriteCond jest już twoim "warunkiem jeśli". Wystarczy dodać jeszcze jedno:

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

Albo użyć RewriteCond% {REMOTE_ADDR} 127.0.0.1 jako alternatywa!. – Jan

+5

RewriteCond% {REMOTE_ADDR}! = 127.0.0.1, aby być dokładnym! – George

+3

Jeśli włączono IPv6, localhost może rozwiązać ":: 1", więc możesz dodać to: 'RewriteCond% {REMOTE_ADDR}! = :: 1' –

11

dodałem wszystko:

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