Wie man mit Apache mod_rewrite alle Aufrufe von domain.tld auf www.domain.tld umleitet habe ich unter dem Beitrag WordPress Standarddomain festlegen vor einiger Zeit zusammengefasst.
Will man aber umgekehrt alle Aufrufe der Domain die mit www.domain.tld oder www.subdomain.domain.tld erfolgen auf domain.tld bzw. subdomain.domain.tld umleiten so muß man etwas ein die Trickkiste greifen.
www. wegzulassen macht bei Sudomains in jedem Fall Sinn, um duplicate Content zu vermeiden. Gängige Suchmaschinen, indexieren sonst www.subdomain.domain.tld und subdomain.domain.tld als zwei verschiedene Domain. Ihr kennt das Problem. Multipliziert man das z.B. mit einem Blogservice, der Subdomains anbietet, so kommt man schnell zu einem unschönen Wust an doppelt indexierten Blogs.
Die Lösung ist im Prinzip sehr simpel und sieht wie folgt aus. Der Trick steckt im %1-Tag von Apaches mod_rewrite. Dazu gleich mehr.
…
RewriteCond %{HTTP_HOST} ^www\.(.*)\.domain\.tld$ [NC]
RewriteRule ^(.*)$ http://%1.domain.tld/$1 [R=301,L]
…
Beginnt eine angefragte Domain mit www. www.subdomain.domin.tld und handlet es sich um eine Subdomain, dann leite diese Anfrage per 301 auf subdomain.domain.tld um. %1 enthält hierbei das Ergebnis der Regular Expression Matches auf Zeile 1 in unserem Falle die Subdomain und $1 enthält den aufgerufenen Pfad, der in Zeile 2 gemacht wird.
Merke: %1, %2, … beziehen sich auf die Matches der letzten Regular Expression, $1, $2, … auf die aktuelle.
wohin, in welche datei, und die drei w fragen:
wozu?
wie funktionier?
wie macht man?
das ganze als liste am ende der beschrei
ottung1. mach dies mach das
2. prüfe dies prüfe das
3. mach noch dies und was anderes
4. …
…