Seite 1 von 1

Verzahnte RewriteRules um alte URLs zu vermeiden?

Verfasst: 17.08.2010 15:15
von bongrek
Wäre super, wenn jemand den Knoten zum platzen bringt. Ich habe schon einiges probiert, aber drehe mich immer im Kreis.

Auf einer Domain werden Produkte durch ein PHP-Script aufgerufen, z.B.:
http://www.mydomain.com/product.php?id=888

Im Sinne der SEO benutze ich folgende RewriteRule damit man die Seite durch Eingabe von mydomain.com/888.html aufrufen kann.

Code: Alles auswählen

RewriteRule ^([-a-zA-Z0-9_]+)\.html$ /product.php?id=$1 [L]     
Das Problem:
In grauer Vorzeit wurden das Produkt 8888 durch ein Perl-Script aufgerufen:
http://www.mydomain.com/cgi-bin/product.pl?prod=8888
Diese alten URLs sollten aufgefangen werden. Ich kriege es auch hin, daß diese PERL-URLs durch das neue PHP-Script ausgeführt wird:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^product=([0-9a-zA-Z_-]*)$
RewriteRule ^cgi-bin/product.pl$ /product.php?product=%1 [R,L]
Allerdings steht dann in der Addresszeile:
http://www.mydomain.com/product.php?id=888

Mein Ziel:
Dass in der Addresszeile bei Eingabe der alten Perl- URL letztlich http://www.mydomain.com/888.html steht und die alten Scriptpfade aus dem kollektiven Gedächtnis der Menschheit getilgt werden. Hoffe, das geht überhaupt..:-)
Vielen Dank schon mal.

Re: Verzahnte RewriteRules um alte URLs zu vermeiden?

Verfasst: 06.09.2010 15:33
von Gumbo
Es muss vermutlich nur die Reihenfolge der beiden Regeln vertauscht werden. Allgemein sollten Regeln, die eine externe Weiterleitung verursachen, vor denjenigen Regeln stehen, die nur eine interne Weiterleitung verursachen.