Um in einer .htaccess mittels mod_rewrite zu erzwingen, dass vor der Domain immer ein “www.” steht, dazu gibt es viele Beispiele. Leider steht dort immer meist der Hostname hartcodiert in der Syntax.
Hier eine rewrite-rule, die auch im Multidomainbetrieb funktioniert (also mehrere Domains berücksichtigt), mit Subdomains umgehen kann und keine Hostnamen hartcodiert in der Syntax stehen hat.
# Enable URL rewriting RewriteEngine On # Redirect to canonical domain if non-canonical domain is # requested (prepend "www" to requested hostname) but only # if there are less than 2 dots (.) in the host (prevent # usage on subdomains) RewriteCond %{HTTP_HOST} !^www. [NC] RewriteCond %{HTTP_HOST} !^.*\..*\..* [NC] RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
Soll heißen: Wenn der Hostname nicht mit “www.” beginnt und dort nicht zwei oder mehr Punkte vorkommen (Indiz für eine Subdomain), dann hänge ein “www.” vor den Hostnamen.
Hinter der zweiten Condition steht die Idee, das in URLs ohne Subdomain nur ein Punkt vorkommt (z.B. domain.de) und in URLs mit Subdomains mindestens zwei Punkte (z.B. beta.domain.de).