2011-02-05 5 views
4

Je veux forcer "www." sur mes URL (par exemple http://domain.com devient http://www.domain.com). Cependant, je ne veux pas qu'il soit forcé sur les URL qui ont déjà un sous-domaine (par exemple http://images.domain.com ne devrait pas devenir http://www.images.domain.com). L'extrait suivant j'ai trouvé sur le net fait ce dernier:Force "www." via .htaccess

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

Que dois-je faire pour que cela fonctionne pour moi? Merci.

Répondre

5

Simple Les règles ci-dessous forcent www, à l'exception des sous-domaines.

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

Modifiez et collez-le, redémarrez apache.

expliquer brièvement:

RewriteCond %{HTTP_HOST} =name.domain [NC] match lorsque quelqu'un tape name.domain (votre nom de domaine).

Lorsque les types subdomain.name.domain le RewriteCond est false et ne pas rediriger. Tu comprends? En règle que vous avez précédemment posté vous correspondait à! (Pas)^(commençant par) www et subdomain.name.domain satisfait RewriteCond et est ce que vous ne voulez pas. :)

+0

pouvez-vous s'il vous plaît expliquer ce que "nom" et "domaine" sont? Ces variables sont-elles connues pour .htaccess? Ou suis-je censé les remplacer par mes valeurs réelles. J'espère une solution qui peut être mise sur n'importe quel site (sans avoir à configurer quoi que ce soit). – StackOverflowNewbie

+0

Je mets à jour ma réponse avec l'explication –

+1

est-il un moyen sans coder en dur le nom de domaine? – Tom