PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dringendes mod_rewrite-Problem



AndreasMeier
09.09.06, 10:01
Hallo zusammen,

Ich bin am verzweifeln, da ich mich die ganze Nacht mit mod_rewrite schon rumschlage und keine Lösung zustande bekomme.

Folgendes Problem:
Ich mußte meine Seitenstruktur auf meinem Webserver umstellen.
Ich hab ein Unterverzeichnis gehabt, mußte dieses loswerden und hab alle Dateien um eine Ebene nach oben verschoben.
Jetzt hatte ich das Problem, dass Suchmaschinen immer noch auf das alte Verzeichnis zugreifen und natürlich eine 404 Fehlermeldung bekommen.

Dann hab ich mich mit Rewrite-Rules beschäftigt, komme aber in letzter Instanz nicht weiter.

Die alte URL-Struktur sah so aus :
http://www.domain.de/catalog/product.php?products_id=5428

die neue Struktur soll so aussehen:
http://www.domain.de/product.php?products_id=5428

Ich möchte also einfach alles aus dem catalog-Verzeichnis umleiten, und zwar mit allen PHP-Parametern.

Nun hab ich das catalog-Verzeichnis wieder erstellt und eine .htaccess dort platziert.
Dort steht folgendes drin:


RewriteEngine on
Redirect 301 /catalog/ http://www.domain.de/


Jetzt hab ich das Problem, dass er mir zwar eine Umleitung einrichtet,
ABER bei
http://www.domain.de/catalog/product.php?products_id=5428

kommt man nur zu dieser URL
http://www.domain.de/product.php

Er schmeißt mir zwar erfolgreich das catalog-Verzeichnis aus der URL, schneidet mir aber auch den hinteren Teil ab, und das ist natürlich der wichtige Teil des Parameters.

Desweiteren hab ich nicht nur o.g. product.php, sondern auch andere PHP-Dateien, die ähnlichem Muster entsprechen. Diese muß ich natürlich auch umleiten.
Ich suche demnach eine Rule, die auf alle Dateien passen und nicht nur auf die product.php

Wie kann ich die Rewrite Rule denn so modifizieren, dass er den hinteren Teil speichert und der neuen URL mit übergibt ?

Danke für eure Hilfe,
Gruß
Andreas

Roger Wilco
10.09.06, 15:32
Redirect ist eine Direktive von mod_alias.
Mit mod_rewrite würde ich folgendes machen (ungetestet):

RewriteRule ^/catalog/(.*)$ /$1 [R,QSA]

Gromobir
10.09.06, 16:53
Guten Tag,
eventuell könnte dir auch folgendes weiterhelfen:


RedirectMatch ^/catalog/product.php$ product.php

bzw.

RedirectMatch ^/catalog$ /

In diesem Sinne...
Gromobir

ldi91
10.09.06, 23:57
und wenn rewrite nicht geht. dann nimm php


<?

$info=getenv ("QUERY_STRING");

header("Location: /product.php?$info");

?>