2010-08-20 41 views
5

Ich muss von einer Hauptdomain wie mydomain.com oder www.mydomain.com zu sub.mydomain.com umleiten - und das muss für alle Anfragen funktionieren , also mydomain.com/whatever geht zu sub.mydomain.com/whatever.301 Umleitung von Hauptdomäne (www und nicht www) zu Subdomain

ich das versucht habe, die nur für nicht-www an der Haupt-Domain funktioniert:

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

Ich bin nur neugierig zu Lernzwecken als alles andere als was ist der Vorteil dieser Weiterleitung? – JM4

Antwort

3

Sie könnten sie in einer einzigen Regel kondensieren auch:

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

Mark Punkt über die / ist eine wichtige Überlegung. Da Sie jedoch die Regel in .htaccess definieren, wird die Eingabe (und durch Zuordnung die erfasste Rückreferenz) nicht mit einem führenden Schrägstrich beginnen, so dass Sie in diesem Fall tatsächlich eine explizite benötigen (wie Sie).

Da wir einfach mal so den ganzen Weg wollen, mit %{REQUEST_URI} in diesem Sinne ist zuverlässiger, weil es immer einen führenden Schrägstrich hat, unabhängig vom Kontext wir in die Regel verwenden.

2

Fügen Sie auch:

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

Eine Sache auch zu beachten ist, dass Sie wahrscheinlich nicht tun wollen, dass letzte / in Ihrem RewriteRule, wie es zwei Slashes zu der umgeleiteten URL hinzufügen (zB http://mydomain.com/foo.html wird http://sub.mydomain.com//foo.html).

Verwandte Themen