mod_rewrite: Domainumleitung
Paul Brunner
- webserver
Guten Morgen:
Von den Profis abgeschrieben und trotzdem nicht zum laufen gebraucht.
Folgender Abschnitten in der .htaccess soll von einem alten auf einen neuen Domainnamen umleiten:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?alt.de.*$ [NC]
RewriteRule ^/~(.+) http://www.neu.de/~$1 [R=301,L]
Die Umleitung schein zu funktionieren, aber das R-Flag sollte doch eigentlich einen rewrite erzwingen. Trotzdem steht noch der alte Domain-Name in der Adresszeile. Warum?
Gruß
Paul
Moin!
Folgender Abschnitten in der .htaccess soll von einem alten auf einen neuen Domainnamen umleiten:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?alt.de.*$ [NC]
RewriteRule ^/~(.+) http://www.neu.de/~$1 [R=301,L]Die Umleitung schein zu funktionieren, aber das R-Flag sollte doch eigentlich einen rewrite erzwingen. Trotzdem steht noch der alte Domain-Name in der Adresszeile. Warum?
Klar, dass sie zu funktionieren "scheint". Damit sie wirksam werden kann, muß der Request auf die alte Domain im gleichen Webspace bzw. beim gleichen virtuellen Host landen, wie die neue Domain. Da keinerlei URL-Verschiebung gemacht wird, ist ein Request nach www.alt.de/~irgendwas identisch mit www.neu.de/~irgendwas.
Das funktioniert auch ganz ohne RewriteRule.
Bei mir (allerdings in der httpd.conf) geht folgendes prima:
RewriteCond %{HTTP_HOST} !=www.domain.com
RewriteRule ^(.*)$ http://www.domain.com$1 [R=301]
- Sven Rautenberg
Hallo,
Klar, dass sie zu funktionieren "scheint". Damit sie wirksam werden kann, muß der Request auf die alte Domain im gleichen Webspace bzw. beim gleichen virtuellen Host landen, wie die neue Domain. Da keinerlei URL-Verschiebung gemacht wird, ist ein Request nach www.alt.de/~irgendwas identisch mit www.neu.de/~irgendwas.
Mir ist nicht ganz klar was du damit meinst, aber...
Die beiden Domains sind innerhalb des selben Packetes auf das selbe Verzeichnis gemappt. Zweck der Übungs ist also nicht wirklich auf andere Inhalte zu verweisen, sondern dafür zu sorgen, dass wer auch immer über die alte Adresse ankommt (vor allem Suchmaschinen), die neue Adresse und die entsprechende Status-Meldung zu sehen bekommt.
Bei mir (allerdings in der httpd.conf) geht folgendes prima:
RewriteCond %{HTTP_HOST} !=www.domain.com
RewriteRule ^(.*)$ http://www.domain.com$1 [R=301]
Sollte eigentlich keinen Unterscheid machen ob in httpd.conf oder htaccess, oder?
Gruß
Paul
P.S. Danke für die schnelle Antwort. Und... ich bin zwar nicht deine Mama, aber schläfst du auch mal, Bub? ;-)
use Mosche;
Bei mir (allerdings in der httpd.conf) geht folgendes prima:
RewriteCond %{HTTP_HOST} !=www.domain.com
RewriteRule ^(.*)$ http://www.domain.com$1 [R=301]Sollte eigentlich keinen Unterscheid machen ob in httpd.conf oder htaccess, oder?
Naja, die httpd.conf Variante müßte prinzipiell schneller sein, weil nicht jedes Mal die .htaccess neu geladen werden muss.
use Tschoe qw(Matti);
Moin!
Klar, dass sie zu funktionieren "scheint". Damit sie wirksam werden kann, muß der Request auf die alte Domain im gleichen Webspace bzw. beim gleichen virtuellen Host landen, wie die neue Domain. Da keinerlei URL-Verschiebung gemacht wird, ist ein Request nach www.alt.de/~irgendwas identisch mit www.neu.de/~irgendwas.
Mir ist nicht ganz klar was du damit meinst, aber...
Die beiden Domains sind innerhalb des selben Packetes auf das selbe Verzeichnis gemappt. Zweck der Übungs ist also nicht wirklich auf andere Inhalte zu verweisen, sondern dafür zu sorgen, dass wer auch immer über die alte Adresse ankommt (vor allem Suchmaschinen), die neue Adresse und die entsprechende Status-Meldung zu sehen bekommt.
Genau das meinte ich: Es ist prinzipiell egal, ob der Request von www.alt.de oder www.neu.de auf eine Ressource geht - der URL-Baum dahinter ist in beiden Fällen identisch, es unterscheidet sich nur die URL.
Deswegen ist deine Aussage, dass dein Rewriting scheinbar funktioniert, nur eben das Redirect nicht, eben nicht an der Auslieferung der Dateien festzumachen. Auch ohne Rewriting würdest du den gleichen Effekt haben. Wenn Rewriting kein Redirect ausgibt (und du deshalb die neue Domain in der Adresszeile siehst), dann funktioniert es eben gerade NICHT.
Bei mir (allerdings in der httpd.conf) geht folgendes prima:
RewriteCond %{HTTP_HOST} !=www.domain.com
RewriteRule ^(.*)$ http://www.domain.com$1 [R=301]Sollte eigentlich keinen Unterscheid machen ob in httpd.conf oder htaccess, oder?
Da es hier um die Ausgabe eines Redirects geht, sollte es beispielsweise auch ohne RewriteBase-Angabe gehen.
P.S. Danke für die schnelle Antwort. Und... ich bin zwar nicht deine Mama, aber schläfst du auch mal, Bub? ;-)
Schon. Aber nicht dann, wenn ich antworte. :)
- Sven Rautenberg