2016-04-19 18 views
0

Wir haben einige alte URLs in SERPs, die in diesem Format sind:Redirect URLs mit .htaccess

/pneumatic-stapler-parts-438s2-p-19762.html

Die wichtigen Teile sind die -p - (was es als ein Produkt bezeichnet) und die Nummer am Ende, die die Produkt-ID ist. Wir haben auch URLs mit -c, die eine Kategorie bezeichnen.

Mit .htaccess, wie können wir die alten URLs zu folgendem Format umleiten:

index.php r = Produkt/Ansicht & id = 19762

Die Kategorie Urls wäre in diesem Format?:

index.php? r = Kategorie/view & id = 123

ich glaube, dass die -p- und -C- entscheiden kann, verwendet werden, welche der beiden Formate die URL wird.

+0

Sie einige Rahmen verwenden? Ihre neuen Routen sehen wie "Controller/Action" -Muster aus. Vielleicht brauchst du dann mod_rewrite nicht? Schreiben Sie einfach die entsprechenden Routenregeln für das Framework. – Andrew

+0

Wir wollen 301 Weiterleitungen. .htaccess ist der beste Weg. – Billy

Antwort

1

können Sie in Ihrem .htaccess verwenden:

RewriteEngine on 

# skip all files and directories from rewrite rules below 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

# product 
RewriteRule -p-(\d+)\.html$ /index.php?r=product/view&id=$1 [R=301,NC,QSA,L] 

# category 
RewriteRule -c-[\d_]*?(\d+)\.html$ /index.php?r=category/view&id=$1 [R=301,NC,QSA,L] 
+0

Dies ist keine Weiterleitung. Wir benötigen eine 301-Weiterleitung. – Billy

+0

Dies funktioniert für Produkte: RewriteRule -p - (\ d +) \. Html $ /index.php?r=product/view&id=$1 [R = 301, L] Für Kategorien ist das Problem, dass die ID unserer alten URLs ist in diesem Format 345_67_83 - wir wollen nur den letzten Teil, die 83. Wie können wir das tun – Billy

+0

Hier ist eine Beispielkategorie URL: /husky-portable-air-compressor-repair-parts-c-271_458_459.html - wir wollen nur die 459 als ID. – Billy