Seite 1 von 1

Frage zu mod_rewrite

Verfasst: 11.01.2011, 15:48
von PageRenk
Hallo,

ich möchte per mod_rewrite (301) alle möglichen URL's einer Subdomain zur www-Domain weiterleiten.

Ist am Bsp vielleicht einfacher zu verstehen
sub.domain.de leitet weiter auf www.domain.de
sub.domain.de/verzeichnis/ leitet weiter auf www.domain.de
sub.domain.de/eine-datei.htm leitet weiter auf www.domain.de
sub.domain.de/index.php?id=345 leitet weiter auf www.domain.de

Die Subdomain zeigt auf ein Verzeichnis auf meinem Server, in dem eine htaccess-Datei liegt.

Die htaccess sieht so aus:

Code: Alles auswählen

RewriteEngine On
RewriteRule ^(.*)$ http://www.domain.de/ [R=301,L] 

Soweit funktioniert die Weiterleitung auch...
Nur bei sub.domain.de/index.php?id=345 wird auf www.domain.de/?id=345 weitergeleitet.

Muss ich hier weitere Anweisungen in die htaccess packen, oder warum entfernt der Server zwar den Dateinamen, lässt aber die Parameter stehen???

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 11.01.2011, 17:07
von chris21

Code: Alles auswählen

RewriteEngine On
RewriteRule ^(.*)$ http://www.domain.de/? [R=301,L]
Beachte das Fragezeichen am Ende der Zieldomain.

Damit ist Dein Problem mit den Parametern gelöst.

Verfasst: 12.01.2011, 08:20
von PageRenk
Hallo,

das hat funktioniert. Super!

Ich stehe aber irgendwie auf dem Schlauch in Sachen mod_rewrite und der Bedeutung des Fragezeichens in dem Ausdruck...

Was bedeutet das Fragezeichen an dieser Stelle?

Verfasst: 12.01.2011, 14:20
von chris21
Das Fragezeichen setzt - praktisch beschrieben - den automatisch gesetzten [QSA] Flag außer Kraft (technisch ist es wieder ungenau, aber so ist es am Besten verständlich). Der QSA Flag kümmert sich darum, bei Rewrites einfach den zuvor vorhandenen Query String mit zu übergeben.

Mod_Rewrite arbeitet in der Regel auf Host/Direcotry/Filenamen und läßßt Query Strings unangetastet, sofern man sich nicht nicht explizit ihnen zuwendet.

So wird ein Query String bspw. nicht über das Pattern in der RewriteRule erfasst und in einer RewriteCond kann man nur über {QUERY_STRING} tatsächlich diesen erwischen.

Mod_Rewrite kümmert sich also i.d.R. nicht sonderlich um Query Strings, sondern reicht sie einfach weiter durch. Das Fragezeichen als spezieller Operator im Ziel verhindert dies und schneidet den Query String ab.

Verfasst: 13.01.2011, 08:40
von PageRenk
Mod_Rewrite kümmert sich also i.d.R. nicht sonderlich um Query Strings, sondern reicht sie einfach weiter durch.
Ahhh...
Das wusste ich nicht! So wird es doch klarer, warum das so ist.

Danke für Deine Erklärung.