Apache: Rewrite-Regeln zur Weiterleitung auf www-Subdomain

Auch die möglichen Subdomains Eurer Domains sollten erreichbar sein. Damit die Webseite aber nicht unter mehreren Seiten gleichzeitig erscheint (Stichwort duplicate content) sollte es eine Weiterleitung auf die Hauptdomain, meißt die “www”-Subdomain, geben.

Wenn diese Funktionalität nicht bereits von der Anwendung abgedeckt ist, kann hier eine Regelung im Webserver helfen. Um dies nicht für die vielen Domains einzeln zu definieren, habe ich mir für den Fall der Weiterleitung auf die “www”-Subdomain einen Rewrite-Regelsatz erstellt. Man muss dann alle Domains einfach als “ServerAlias” eintragen, den Rest macht die Regel.

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

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

So werden Vertipper wie “ww.domain.tld” oder nur “domain.tld” als auch “irgendwas.domain.tld” brav auf “www.domain.tld” weitergeleitet. Der Code sollte entsprechend am Ende der Konfigurationsdatei stehen, damit ggf. vorher definierte Domains davon nicht betroffen werden.

Nachfolgend ein komplettes Beispiel:

#domain1
<VirtualHost>
  ServerName www.domain1.tld
  DocumentRoot /var/www/htdocs/domain1
</VirtualHost>

#domain2
<VirtualHost>
  ServerName www.domain2.tld
  DocumentRoot /var/www/htdocs/domain2
</VirtualHost>

#redirects
<VirtualHost>
  ServerName redirects
  ServerAlias domain1.tld *.domain1.tld \
    domain2.tld *.domain2.tld

  RewriteEngine On

  #redirect subdomains like
  #  abc.domain.tld and ww.domain.tld to www.domain.tld
  RewriteCond %{HTTP_HOST} !^www\.(.*)\.(.*)$
  RewriteCond %{HTTP_HOST} ^(.+)\.(.+)\.(.+)$
  RewriteRule /(.*) http://www.%2.%3/$1 [R=301,L]

  #redirect missing subdomain like
  #  domain.tld to www.domain.tld
  RewriteCond %{HTTP_HOST} !^www\.(.*)\.(.*)$
  RewriteCond %{HTTP_HOST} ^(.+)\.(.+)$
  RewriteRule /(.*) http://www.%1.%2/$1 [R=301,L]
</VirtualHost>

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>