2

ワードプレスのパーマリンクを から に変更domain.com/%year%/%month%/%post-slug%しましたdomain.com/%post-slug%

次のmod_rewriteルールを使用して、古い URL をすべて新しい URL にリダイレクトしました。

RedirectMatch 301 ^/[0-9]{4}/[0-9]{2}/([a-z0-9\-/]+) http://www.site.com/$1

これがすべての日付ベースのアーカイブをリダイレクトしたという問題

domain.com/%year%/%month%/%date%

domain.com/%date%

同様に404エラーが発生しました。上記のコードを変更して、日付の問題に取り組むために、このような文字数 (最小3および最大) を含めました。300

RedirectMatch 301 ^/[0-9]{4}/[0-9]{2}/([a-z0-9\-/]{3,300}+) http://www.site.com/$1

しかし、今は500 Internal Server error.

これに関する助けをいただければ幸いです。

4

2 に答える 2

1

%post-slug%がどのように見えるかはわからないので、それと%date%を区別するより良い方法があるかどうかはわかりませんが、%date%は 2 桁であると推測していますそのため、否定先読みアサーションを使用して除外できます。また、[0-9]の代わりに\dを使用することもできます(これらは交換可能ですが、最初のものは短いです)。

RedirectMatch 301 ^/\d{4}/\d{2}/(?!\d{2}$)([a-z0-9\-/]+) http://www.site.com/$1

%post-slug%が 3 文字未満にならないことが確実でない限り、その方が文字数をチェックするよりも信頼性があります。もちろん、%post-slug%が 2 桁の数字になる可能性がある場合、私が提案したルールはそれをスキップします。しかし、その場合、正規表現で違いを見分ける方法はありません。

また、あなたが書いたことに基づいて、%date%の後には何も来ないと思います。その後に別の部分がある場合は、ルールを次のように変更します。

RedirectMatch 301 ^/\d{4}/\d{2}/(?!\d{2}($|/))([a-z0-9\-/]+) http://www.site.com/$2

( $1の代わりに末尾の$2に注意してください)

于 2013-08-20T16:41:11.000 に答える
1

ルールを次のように変更します

RedirectMatch 301 ^/[0-9]{4}/[0-9]{2}/([a-z0-9/-]{3,})$ http://www.site.com/$1
于 2013-08-20T16:15:59.767 に答える