2017-08-04 2 views
1

Ich habe ein Shop-CMS gewechselt und viele alte URLs in die .htaccess geschickt, um alte Produkte an ihren neuen Ort umzuleiten.RedirectMatch: leitet zu falscher URL um

Aber einige Umleitungen sind falsch:

RedirectMatch 301 ^/products/catxy/313? https://www.example.com/products/catxy/product-1/ 
RedirectMatch 301 ^/products/catxy/314? https://www.example.com/products/catxy/product-2/ 
RedirectMatch 301 ^/products/catxy/319? https://www.example.com/products/catxy/product-3/ 

Wenn ich gehe, ich example.com/products/catxy/319 erhalten umgeleitet Produkt-1 und nicht auf produkt 3

Wie ich verstehe der Regex darüber bedeutet, beginnend mit/products/catxy/319 [MAYBEMORE] -> redirect to product-3

Ich kann nicht schreiben ^/Produkte/catxy/319 $ weil es viele verschiedene Enden für 319 gibt (alle Variationen dieser Produkt-ID).

Ich weiß auch nicht, ob es besser wäre, mod_rewrite in meiner Situation zu verwenden.

Antwort

0

Problem ist das Vorhandensein von ? am Ende Muster: wahrscheinlich

/products/catxy/313 

oder

products/catxy/31 

Sie: ^/products/catxy/313?, die so Ihre erste Regel, die mit beginnt paßt alles optional letzte Ziffer machen bedeutet, dass der nachgestellte Schrägstrich optional bleibt und Ihre Regeln wie folgt lauten:

RedirectMatch 301 ^/products/catxy/313(?:/.*)?$ https://www.example.com/products/catxy/product-1/ 
RedirectMatch 301 ^/products/catxy/314(?:/.*)?$ https://www.example.com/products/catxy/product-2/ 
RedirectMatch 301 ^/products/catxy/319(?:/.*)?$ https://www.example.com/products/catxy/product-3/ 

Denken Sie daran, Ihren Browser-Cache zu leeren, bevor Sie die Änderungen testen.

+0

Nein, das hat nicht funktioniert ... aber mit dir antwort habe ich es geändert in ^/products/catxy/319 (. *) $ Und das funktioniert in meinem Fall – suntrop

+0

Überprüfen Sie es jetzt, es sollte funktionieren. Ihre URL hat wahrscheinlich mehr Text nach '313' – anubhava

Verwandte Themen