2017-02-04 1 views
1

Ich habe eine Rewrite-Regel mit Regex that's working fine. aber jetzt möchte ich hinzufügen 301 301 Weiterleitungen, die nicht sind.mulitple 301 leitet nach Regex

RewriteRule ^post/[0-9]+/([^/]+)$ http://domain.com/$1 [L,R=301] 

RedirectMatch 301 /some-other-old-slug http://domain.com/category/some-new-slug-based-on-some-other-old-slug 

der erste funktioniert, der zweite nicht. Woher?

EDIT: zu Redirect zu ändern, hat es funktioniert. aber ich brauche sowohl die Rewrite-Regel als auch die gelegentlichen Slug-Änderungen. Beispiel:

domain.com/post/123345/old-slug zu domain.com/old-slug-edited. Es scheint, dass die erste Rewrite-Regel Trick ist und die zweite wird ignoriert.

Antwort

1

Das sollte gut funktionieren. Sie benötigen RedirectMatch nicht, um eine genaue URI anzugeben. Verwenden Sie einfach Redirect. Aber ich denke, Sie haben beim Testen einfach einen Rechtschreibfehler gemacht, oder ein anderes Problem, das nicht aufgetreten ist, als Sie es vereinfacht haben, die Frage zu stellen. Kein Grund, das würde nicht funktionieren.

aktualisieren

Für Ihre Grenzfälle, verarbeiten sie mit mod_rewrite zuerst. Ich habe mich dafür entschieden, dies in einem RewriteCond zu tun, um die Lesbarkeit zu verbessern und so den URI einzufügen, ohne Sonderzeichen zu entkommen. Fügen Sie ein Paar für jeden Kantenfall hinzu:

RewriteCond %{REQUEST_URI} =/post/123456789/edge-case 
RewriteRule^http://example.com/new-edge-case-slug [L,R=301] 

RewriteRule ^post/[0-9]+/([^/]+)$ http://domain.com/$1 [L,R=301] 
+0

tatsächlich funktioniert es. zumindest nachdem ich Redirect benutzt habe. Einige Randfälle erfordern jedoch eine Umleitung der ursprünglichen RewriteRule UND einen etwas anderen Slug! Ich habe die ursprüngliche Frage bearbeitet. – Pico

+0

Ich habe eine Lösung für Ihre Randfälle hinzugefügt. – SuperDuperApps

+0

das ist gut. Danke. und so rechtzeitig. Ich wünschte, ich könnte zweimal upvotieren. – Pico

Verwandte Themen