Weiterleitung mit 301

Hallo Jörg
Eine Frage hätte ich noch ... ;-)

Wie kann ich jetzt per mod_rewrite schreiben, dass zum Beispiel die Seite:

www.beispiel.de/index.php/products_id/XXXX
(wobei das XXXX Ziffern sind)

nach

www.beispiel.de/index.php?products_id=XXXX
(wobei das XXXX die gleiche Ziffer wie in der Ausgangs URL sein soll?)

umgezogen ist. Ein 301 sollte unbedingt gesendet werden.

14.01.2010 16:50


Das würde ich so probieren:

RewriteRule ^index\.php/products_id/([0-9]+)$ http://www.beispiel.de/index.php?products_id=$1 [R=301] 

14.01.2010 19:21


Das funktioniert wunderbar!
Vielen lieben Dank!!!

Detlef

14.01.2010 19:28


... darf ich noch eine ...Jörg? ;-)

Jetzt müsste ich (das ist wirklich die letzte Frage!):

www.beispiel.de/product_info.php/cPath/xxxx/products_id/xxxx

xxx = Ziffern

generell mit 301

zu -> www.beispiel.de/product_info.php?products_id=xxxx umleiten.

der Bereich /cPath/xxxx/ kann ignoriert werden. Wichtig ist, dass die letzten Ziffern
oben hinter products_id/xxxx <---die

unten an ?products_id=xxxx <--- hier dran!

Danke schon einmal vorab .. ;-)

Detlef

P.S. ... und mod_rewrite werde ich wohl trotzdem nie verstehen .... ;-(

14.01.2010 20:16


Das sollte so gehen:

RewriteRule ^product_info\.php/cPath/[0-9]+/products_id/([0-9]+)$ http://www.beispiel.de/product_info.php?products_id=$1 [R=301]

"[0-9]+" repräsentiert mehrere Ziffern; der erste geklammerte Ausdruck im Muster wird auf der rechten Seite durch ein "$1" wieder aufgenommen

14.01.2010 22:45 | geändert: 14.01.2010 22:45


Hallo und guten Abend

Ich vergaß mitzuteilen, dass es 3 mögliche Grundvarianten der umzuschreibenden URL gibt.

Version 1:
www.beispiel.de/product_info.php/cPath/xxxx/products_id/xxxx
funktioniert super mit o.g. Regel.
Allerdings gibt es bei mir noch folgenden Versionen:

Version 2:
www.beispiel.de/product_info.php/cPath/xxxx_xxxx/products_id/xxxx

und

Version 3:
www.beispiel.de/product_info.php/cPath/xxxx_xxxx_xxxx/products_id/xxxx

Version 2 u. 3 funktionieren natürlich mit o.g. Regel nicht. Klar, der Trenner _ zwischen den Ziffern ist ja in der Regel nicht vorhanden.

Hast Du abschließend auch dafür eine Lösung? Am besten wäre ja eine Regel für alle 3 möglichen Varianten. Auch eine Regel für jede Version würde mir sehr weiter helfen.

Lieben Gruß (... und DANKE für Deine Mühen Jörg!)

Detlef

14.01.2010 23:52


Dazu kannst du die Zeichenklasse [0-9] einfach durch einen Unterstrich erweitern

RewriteRule ^product_info\.php/cPath/[0-9_]+/products_id/([0-9]+)$ http://www.beispiel.de/product_info.php?products_id=$1 [R=301]

15.01.2010 00:00


Guten Morgen!

Hab vielen Dank für die Hilfe. Ohne Dich wäre ich wirklich aufgeschmissen! Absolut genial, so unkompliziert wirklich gute Hilfe zu bekommen.

D A N K E !

Detlef

15.01.2010 01:23


Guten Morgen Jörg ...

Ja ... 3.15 Uhr und ich sitze immer noch vor der Kiste weil erneut eine Frage aufgetaucht ist, die ich nicht beantworten kann.

Ich möchte von:

http://www.beispiel.de/product_reviews_info.php/products_id/XXX/reviews_id/XXXXX

nach

http://www.beispiel.de/product_reviews_info.php?products_id=XXX&reviews_id=XXXXX

mit einem 301 umleiten.

Sowohl die Ziffern (variable Stellen - also 1,2,3,4,5 stellig) XXX hinter products_id/ von oben und die Ziffern (variable Stellen - also 1,2,3,4,5 stellig) hinter reviews_id/ müssen jeweils unten wieder an enstprechender Stelle in die umgleitete URL eingefügt werden.

Eine Hilfe noch? ;-)

Danke schon mal!

Gruß
Detlef

19.01.2010 03:27


Du verwendest einfach zwei passende geklammerte Ausdrücke im Muster, die du durch $1 und $2 im Weiterleitungsziel wieder aufnehmen kannst

RewriteRule  ^product_reviews_info\.php/products_id/([0-9]+)/reviews_id/([0-9]+)$ http://www.beispiel.de/product_reviews_info.php?products_id=$1&reviews_id=$2 [R=301]

19.01.2010 14:31