2009-11-27 6 views
0

J'utilise actuellement htaccess pour forcer toutes les requêtes à utiliser www. Donc:Utiliser htaccess pour rediriger les requêtes de non-www vers www (mais avec une torsion)

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

de rediriger example.com/page à www.example.com/page.

Cependant, ce fichier htaccess est utilisé par plusieurs versions internationales de example.com. Quel code puis-je que peut également faire ce qui suit:

example.de/page -> www.example.de/page et example.co.uk/page -> www.example.co.uk/ Potentiellement, il pourrait y avoir des dizaines de versions de example.com, donc je cherche à éviter d'avoir à me rappeler d'éditer htaccess chaque fois que nous ajoutons un nouveau pays.

+1

Have vous avez essayé un match de capture sur l'expression rationnelle dans votre RewriteCond et en vous référant à cette correspondance dans votre RewriteRule? –

Répondre

1

À droite: pense que je l'ai vraiment craqué. (Ou du moins, il semble que cela fonctionne):

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

semble faire l'affaire.

+0

(ce que PP disait) – Apemantus

+0

Cela va ramasser quelque chose après l'exemple. Tho? c'est-à-dire exemple.abc essayera de rediriger vers www.example.abc – James

+0

Mais PP ne mérite pas le mérite car il n'a mis que 10% d'inspiration, pas 90% de transpiration;) –

2

Vous pouvez utiliser des variables de serveur dans votre Substition, donc cela devrait être faisable avec

RewriteRule ^(.*)$ http://www.${HTTP_HOST}/$1 [L,R=301] 
+0

J'aime ça, succinct! –

0

test si le nom d'hôte actuel ne commence pas par www. et ajoutez si manquant:

RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
Questions connexes