Zur Navigation

Automatische Weiterleitung auf rewrite URL

1 B4c4rd1

Hallo,

vielleicht kann mir hier jemand bei meinem Problem helfen.

Bisher konnte es leider keiner.

Ich habe auf meiner Seite eine RewriteRule definiert, die dem Server sagt, das die folgende URL:

/handyshop/tarif-details.php?netz=2

auch unter:

/handyshop/T-Mobile/Tarife.html

erreichbar ist.

RewriteRule: RewriteRule ^(.*)handyshop/T-Mobile/Tarife(.*)\.html$ ./handyshop/tarif-details.php?netz=2

Jetzt habe ich das folgende Problem. Wenn ich jetzt die URL /handyshop/tarif-details.php?netz=2 eingebe, möchte ich, dass der Server diese URL auch gleich automatisch auf die Fake Adresse /handyshop/T-Mobile/Tarife.html per 301 weiter leitet.

Wie geht das mit mod_rewrite ohne den PHP Code anfassen zu müssen.

Geht das überhaupt?

P.S. Quelle auf Ziel umleiten ist kein Problem wenn die Quelle physikalisch existiert. Anders habe ich es bisher nicht hin bekommen.

Danke für die hilfreichen Antworten!

03.06.2010 14:19

2 Jörg Kruse

In so einem Fall muss man aufpassen, dass man keine Endlosschleife produziert. Die Weiterleitung sollte oberhalb der anderen Rule platziert und mit einem L-Flag versehen werden. Zudem würde ich zur Sicherheit noch die Variable THE_REQUEST auswerten. In etwas so könnte die Weiterleitung funktionieren (ungetestet):

RewriteCond %{THE_REQUEST} /handyshop/tarif-details\.php\?netz=
RewriteCond %{QUERY_STRING} netz=([0-9]+)
RewriteRule tarif-details\.php http://example.com/handyshop/T-Mobile/Tarife%1.html [R=301,L]

PS - in diesem Blogartikel hatte ich die Vorgehensweise auch schon mal beschrieben:

http://notizen.joergkrusesweb.de/n-2009-10/rewrite-redirect.html

03.06.2010 15:30

3 B4c4rd1

Zitat von Jörg
In so einem Fall muss man aufpassen, dass man keine Endlosschleife produziert. Die Weiterleitung sollte oberhalb der anderen Rule platziert und mit einem L-Flag versehen werden. Zudem würde ich zur Sicherheit noch die Variable THE_REQUEST auswerten. In etwas so könnte die Weiterleitung funktionieren (ungetestet):

RewriteCond %{THE_REQUEST} /handyshop/tarif-details\.php\?netz=
RewriteCond %{QUERY_STRING} netz=([0-9]+)
RewriteRule tarif-details\.php http://example.com/handyshop/T-Mobile/Tarife%1.html [R=301,L]

PS - in diesem Blogartikel hatte ich die Vorgehensweise auch schon mal beschrieben:

http://notizen.joergkrusesweb.de/n-2009-10/rewrite-redirect.html

Recht herzlichen Dank :)

03.06.2010 15:35

... 3 Monate später ...

4 Peter (Gast)

Hallo zusammen,

ich versuche einen redirect von domain1.com/artikel1.htm zu domain2.com/artikel2.htm zu realisieren, aber scheitere aber schainbar am Syntax.

Als Basis meiner Versuche nutze ich den funktionierenden redirect von domain1.com nach domain2.com:

RewriteCond %{HTTP_HOST} ^domain1\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain2.com/ [R=301,L]

Mir ist nicht klar wie ich die condition dahingehend erweitere, dass sie sich explizit auf die Datei artikel1.htm bezieht.

RewriteCond %{HTTP_HOST} ^domain1\.com/artikel1\.htm$ [NC]

und ähnliches planloses modifizieren führte zu keinem Ergebnis.

Danke für Eure Hilfe

Pete

21.09.2010 15:02

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]