web-dev-qa-db-fra.com

Apache mod_rewrite: force www uniquement si pas dans localhost

J'ai le suivant dans mon htaccess pour forcer le www dans les URL:

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

Comment puis-je appliquer ceci uniquement sur localhost? Y a-t-il une sorte de condition préalable que je peux mettre? En ce moment, je reçois quelque chose comme ceci: http://www.localhost/ ... 

31

RewriteCond est déjà votre "if-condition". Il suffit d'ajouter un autre:

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

J'ai ajouté tous ceux-ci:

RewriteCond %{HTTP_Host} !=localhost
RewriteCond %{HTTP_Host} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=::1
17
Kiran Madipally

Si vous utilisez un port autre que 80 (par exemple, localhost:8080), vous devrez peut-être également l'ajouter à l'expression régulière:

RewriteCond %{HTTP_Host} !^localhost(?::\d+)?$ [NC]
RewriteCond %{HTTP_Host} !^127\.0\.0\.1(?::\d+)?$
0
Gus