Seite 1 von 1

domain.de/bla nach index.php?123

Verfasst: 06.10.2009, 15:56
von globestern

Code: Alles auswählen

RewriteCond %{HTTP_HOST} !^www\.domain\.tld$ [NC]
RewriteRule ^/bla http://www.domain.tld/index.php?123[R=301,L]
zur erklärung:

ich möchte domain.de/bla nach domain.de/index.php?123 weiterleiten
wichtig: es soll nur /bla weitergeleitet werden andere unterseiten sind nicht betroffen und sollten normal weiterlaufen!

zusätzlich soll ich noch:

domain.nl/bla nach domain.nl/index.php?321 weiterleiten

sprich:
der HTTP_HOST müsste erkannt werden und geprüft ob .nl / .de
das passiert ja mit:

Code: Alles auswählen

RewriteCond %{HTTP_HOST} !^www\.domain\.tld$ [NC]
dann wir der rewrite für /bla durchgeführt:

Code: Alles auswählen

RewriteRule ^/bla http://www.domain.tld/index.php?123[R=301,L]
klappt aber leider nicht, wo liegt der fehler?
andere rewrite rules funktionieren einwandfrei

mfg

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

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 08.10.2009, 08:04
von globestern
niemand eine idee? :cry:

Verfasst: 10.10.2009, 11:49
von Bauchladen
"!" negiert deine Regel. ".tld" ist ein Beispiel nehme ich an.

Zusätzlich könntest du 2 Fälle abfangen, für www und ohne subdomain:

Code: Alles auswählen

RewriteCond %{HTTP_HOST} ^domain\.nl [OR] 
RewriteCond %{HTTP_HOST} ^www.domain.nl
Vllt. ist es nötig deine Regel zum Ende hin zu öffnen

Code: Alles auswählen

RewriteRule ^/bla.*$ http:/ ...
Leider wissen wir noch nicht wie deine Aufrufe aussehen. Es hilft sehr wenn du uns Beispiele lieferst.

Re: domain.de/bla nach index.php?123

Verfasst: 10.10.2009, 12:38
von Mork vom Ork
globestern hat geschrieben:ich möchte domain.de/bla nach domain.de/index.php?123 weiterleiten wichtig: es soll nur /bla weitergeleitet werden andere unterseiten sind nicht betroffen und sollten normal weiterlaufen!

zusätzlich soll ich noch domain.nl/bla nach domain.nl/index.php?321 weiterleiten
Das sind schonmal zwei Fälle mit zwei Zielen. Du hast nur einen Regelsatz mit exakt einem Ziel. Kann also nicht so laufen, wie du wünschst.
der HTTP_HOST müsste erkannt werden und geprüft ob .nl / .de
das passiert ja mit:

Code: Alles auswählen

RewriteCond %{HTTP_HOST} !^www\.domain\.tld$ [NC]
Nein, damit prüfst du, ob HTTP_HOST nicht www.domain.tld entspricht - Betonung auf nicht, wie der Bauchladen schon schrieb. Wenn etwas nicht rot ist, bedeutet das noch lange nicht, dass es grün ist. Es könnte genauso gut lila oder schwarz-weiß kariert sein.

So wäre es richtig:

RewriteCond %{HTTP_HOST} =www.domain.nl

Beachte aber, dass dies nicht auf domain.nl (ohne www.) passt, was aber kein großartiges Problem wäre, wenn du vorher eine allgemeine nicht-www-nach-www-Umleitung hast.
Hast du das nicht und möchtest du beide Fälle, www.domain.nl und domain.nl, benutze dies:

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.nl$

Code: Alles auswählen

RewriteRule ^/bla http://www.domain.tld/index.php?123[R=301,L]
klappt aber leider nicht, wo liegt der fehler?
Das ist nur ansatzweise richtig:

1. Du möchtest nur /bla behandeln, aber nicht /blafasel. Dein Muster ist aber lediglich vorne abgeschlossen (^), hinten ist es hingegen offen. Es passt daher auf alles, was mit /bla beginnt.
2. Ich nehme mal an, du hast diese Regel in einer .htaccess definiert. In der .htaccess prüft RewriteRule immer nur gegen relative Pfade. Dein Muster /bla ist jedoch wegen des führenden Schrägstriches ein absoluter Pfad, richtig wäre bla.
3. Zwischen der Ziel-URL und den mit der eckigen Klammer beginnenden RewriteRule-Optionen solltest du ein Leerzeichen setzen.

1. und 2. zusammen ergeben als richtiges Muster ^bla$ , also an beiden Enden abgeschlossen, vorne mit ^ (Textanfang) und hinten mit $ (Textende) und ohne führenden Schrägstrich.

Das Ganze machst du dann zweimal, einmal für die .nl-Domain, einmal für die .de-Domain.

Verfasst: 12.10.2009, 10:48
von globestern
vielen vielen dank euch beiden
hat super geklappt!