2017-02-04 7 views
1

regex that's working fineを使用して書き換えルールがあります。 しかし、今はadd'l 301リダイレクトを追加したいと思います。mulitple 301は正規表現の後にリダイレクトします

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 

第1のものが動作し、第2のものは動作しません。どうして?

EDIT:リダイレクトに変更すると機能しました。実際には書き換えルールと時折のスラッグ変更の両方が必要です。例:

domain.com/post/123345/old-slug to domain.com/old-slug-edited 最初の書き換えルールはそれをトリックとし、2番目のルールは無視されるようです。

答えて

1

正常に動作するはずです。正確なURIを指定するのに、RedirectMatchは必要ありません。ちょうどRedirectを使用してください。しかし、私はあなたが単にテストの際にスペルミスをしたり、質問をするために簡略化したときに来なかった何か他の問題があったと思います。これがうまくいかない理由はありません。

更新

ご縁の例については、mod_rewriteをして最初にそれらを処理します。私は可読性を向上させるためにRewriteCondでこれを行うことを選んだので、特殊文字をエスケープすることなくURIを貼り付けることができます。各エッジケースに1つのペアを追加します。

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

実際には動作します。少なくともリダイレクトを使用した後はただし、一部のエッジケースでは、元のRewriteRuleと若干異なるスラグのリダイレクトが必要です。元の質問を編集しました。 – Pico

+0

私はあなたのエッジケースのためのソリューションを追加しました。 – SuperDuperApps

+0

これは良いです。ありがとうございました。そしてタイムリーに。私は2倍upvoteすることができれば幸いです。 – Pico

関連する問題