2010-08-20 4 views
5

Je dois rediriger d'un domaine principal comme mydomain.com ou www.mydomain.com vers sub.mydomain.com - et cela doit fonctionner pour toutes les demandes , donc mydomain.com/whatever va à sub.mydomain.com/whatever.301 Redirection depuis le domaine principal (www et non-www) vers le sous-domaine

J'ai essayé ce qui ne fonctionne que pour les non-www au domaine principal:

RewriteCond %{HTTP_HOST} ^mydomain.com [NC] 
RewriteRule ^(.*)$ http://sub.mydomain.com/$1 [L,R=301] 
+0

Je suis plus curieux seulement à des fins d'apprentissage que toute autre chose, mais quel est l'avantage de cette redirection? – JM4

Répondre

3

Vous pouvez les condenser en une seule règle ainsi:

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

point de Mark au sujet de la / est une considération importante. Puisque vous définissez la règle dans .htaccess cependant, l'entrée (et par association la référence arrière capturée) ne commencera pas avec une barre oblique, donc vous en avez réellement besoin d'une explicite dans ce cas (comme vous l'avez fait).

Puisque nous voulons juste tout le chemin de toute façon, en utilisant %{REQUEST_URI} est plus fiable dans ce sens, car il aura toujours une barre oblique, quel que soit le contexte que nous utilisons la règle.

2

ajouter aussi:

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

Une chose aussi à noter est que vous ne probablement pas Vous voulez que cela dernier / dans votre RewriteRule, car il va ajouter deux barres obliques à l'URL redirigé (par exemple http://mydomain.com/foo.html devient http://sub.mydomain.com//foo.html).

Questions connexes