Zur Navigation

URLs werden nicht weitergeleitet

1 Ray Sumeragi (Gast)

Hallo,

ich habe ein sehr spezielles Problem mit der htaccess, dass ich irgendwie nicht lösen kann. Vielleicht kann mir jemand helfen.

Situation ist wie folgt:

Es gab ein altes System wo die URL so ausgesehen haben:
www.domain.de/datei.html

Dann wurde ein neues System eingespielt, mit nicht so schönen URLs:
www.domain.de/category.php?name=dateiname&catid=2

Nun haben wir folgenden Aufbau:
www.domain.de/kategorie/dateiname/2

Das Problem ist, dass ich die alten URLs jeweils auf die neuen weiterleiten möchte. Das klappt von /datei.html nach /kategorie/dateiname/2 auch wunderbar. Nur nicht von /category.php?name=dateiname&catid=2 nach /kategorie/dateiname/2.

Folgende htaccess Anweisung stellt wohl die URLs zusammen, die ich nicht rausnehmen kann, weil dann die Seite nicht mehr geht.

RewriteCond $1 !^(index\.php|category\.php|bilder|bilder-png|css|flash|images|includes|jscript|language|Manuals|news|Prospekte|reg_files|test|zellen|zertifikate)
RewriteRule kategorie/(.*)/(.*) /category.php?catid=$2
RewriteRule produkt/(.*)/(.*)/(.*)/(.*) /product.php?catid=$2&prodid=$4 [L]

Wenn ich also versuche:
redirect 301 /category.php?name=dateiname&catid=2 /kategorie/dateiname/2

dann wird diese Anweisung einfach nicht umgesetzt.

Schonmal vielen Dank, falls einer helfen kann!

05.07.2012 09:17

2 Jörg Kruse

Ich würde hier auch mit mod_rewrite weiterleiten, und zwar oberhalb der anderen Rules - in etwa so:

RewriteCond %{QUERY_STRING} name=(.+)&catid=([0-9]+)
RewriteRule category\.php http://example.com/kategorie/%1/%2 [R=301,L]

05.07.2012 12:17

3 Ray Sumeragi (Gast)

Das ist fast die Lösung :)

Nach der richtigen URL hängt er das noch an:
?name=dateiname&catid=2

Es scheint so, als ob in %2 zuviel gespeichert wird. Da müsste nur die Zahl drinne stehen.

05.07.2012 13:02

4 Jörg Kruse

%2 enthält nur das, was in der zweiten Klammer der RewriteCond gespeichert ist.

Wenn die Ziel-URL keinen Query String enthält, wird der alte wieder angehangen. Das kannst du verhindern, indem du einen leeren Quey String hinten dranhängst, also ein "?"

RewriteRule category\.php http://example.com/kategorie/%1/%2? [R=301,L]

05.07.2012 13:10

5 Ray Sumeragi (Gast)

Danke soweit! Ich konnte die Rule auch für einen ähnlichenPfad der Produkte umschreiben und anwenden. Dabei sind mir noch 2 Kleinigkeiten aufgefallen:

1.
/kategorie/Dateiname/2 - nach der Rule
/kategorie/dateiname/2 - interne Verlinkung (eigentliche URL)

bekomme ich das D noch klein. Sowas wie LOWERCASE? Ich habe mod_speling als Funktion beim googlen gefunden. Diese hat aber auch aktiv keinen Einfluss. [NC] hilft auch nicht weiter...

2.
was teilweise bei name= drinsteht beinhaltet Umlaute ("Zubeh%C3%B6r" müsste "zubehor" werden) und Leerzeichen ("Produkt%20mit%20Funktion" müsste "produkt-mit-funktion" werden)

05.07.2012 14:18

6 Jörg Kruse

Solche Umwandlungen würde ich in PHP machen.

05.07.2012 15:23

7 Ray Sumeragi (Gast)

Ok, vielen Dank!

06.07.2012 08:08

Beitrag schreiben (als Gast)

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





[BBCode-Hilfe]