11. November 2012
Hauptdomain example.com und Subdomains *.example.com per Rewrite Rule nach www.example.com umleiten
Um die Hauptdomain example.com sowie alle Subdomains *.example.com nach www.example.com per Rewrite Rule umzuleiten, braucht man einen Regulären Ausdruck, der sowohl example.com als auch alle Subdomains einschließt, aber www.example.com ausschließt, um keine Redirect Loop zu erzeugen. Der Reguläre Ausdruck muß also z.B. folgende Domains/Subdomains matchen:
- example.com
- sub.example.com
- www.sub.example.com
- sub1.sub2.example.com
- www.sub1.sub2.example.com
Ausgeschlossen werden muß:
Der Regex, der dies bewerkstelligt, lautet:
^(example\.com|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.example\.com))$
Für nginx lautet die entsprechende Rewrite Rule:
if ($http_host ~* "^(example\.com|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.example\.com))$") {
rewrite ^ $scheme://www.example.com$request_uri? permanent;
}
Und für Apache:
RewriteCond %{HTTP_HOST} ^(example\.com|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.example\.com))$ [NC]
RewriteRule ^(.*)$ http://www.example.com$1 [R=301,L]