RewriteCond und RewriteRule helfen hier weiter…
Außerdem sollte man wissen, dass man in einer RewriteRule mit $1, $2, …, %99 auf die RegEx-Gruppen dieser Regel zugreifen kann.
Mit %1, %2, …, %99 kann man auf die RegExp-Gruppen der RewriteConfition zugreifen.
Aber Vorsicht, ich habe zuerst den Fehler gemacht, dass ich auf eine Reg-Ex-Gruppe zugreifen wollte, die in der RewriteRule verneint wurde. Das geht (leider?) nicht.
Folgendes geht also nicht:
RewriteCond %{HTTP_HOST} !^(.*)\.richtigeDomain\.tld$ [NC]
RewriteRule (.*) http://%1.richtigeDomain.tld/$1 [R=301,L]
Stattdessen muss man noch eine Regel einfügen, um auf die subdomain zugreifen zu können:
RewriteCond %{HTTP_HOST} !^(.*)\.richtigeDomain\.tld$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.([a-z|0-9|-]+)\.([a-z|0-9|-]+)$ [NC]
RewriteRule (.*) http://%1.richtigeDomaintld/$1 [R=301,L]
SubSub-Domains etc. werden hier übrigens auch weitergeleitet.
Einige Erklärungen noch:
! = Verneinung einer Regel
^= Der Anfang der Zeichenkette
$ = Das Ende der Zeichenkette
(.*) = Eine Reg-Ex-Gruppe mit beliebigen Zeichen
[NC] = case-insensitive = kein Unterschied zwischen Groß-/Kleinschreibung machen
[R=301,L] = R=301 -> Redirect mit 301-Angabe im header. L = Last -> Letzte Regel, danach wird keine weitere Regel mehr gerprüft. Es wird sofort weitergeleitet.