web-dev-qa-db-ja.com

古いURLを新しい構造にリダイレクトするための.htaccessルール

古いURLは次の形式です。

https://www.example.com/collection/item/item-name-123

新しいURLは次の形式です。

https://www.example.com/collection/item/123

でヒットをリダイレクトしようとしています
https://www.example.com/collection/item/item-name-123からhttps://www.example.com/collection/item/123まで、しかし私は.htaccessのルールを廃止するようには思えません。

私が試したのは、

RewriteRule ^(.*)/item/(.*)-([0-9]+)$ $1/item/$3 [R=301]

これはうまくいっていないようです。単純なものが足りないのですか。

1
Gary

単純なものが足りないのですか。

あなたはLフラグを必要とし(さらなる処理を防ぐため)、このディレクティブは既存の.htaccessファイルの一番上(すなわち# BEGIN WordPressセクションの前)に置かれるべきです。

あなたが既に適切なRewriteBaseディレクティブを定義していない限り(WordPressフロントコントローラは通常これを持っています)、あなたは置換を前に付ける必要もありますスラッシュを含む文字列(ただし、外部リダイレクトにはこれを使用することをお勧めします)。

それ以外の場合は、正規表現と置換文字列は正しく機能するはずです。

言い換えれば、あなたのファイルの一番上に:

RewriteRule ^(.*)/item/(.*)-([0-9]+)$ /$1/item/$3 [R=302,L]

(キャッシュの問題を回避するために)302(一時的)リダイレクトでテストし、意図したとおりに動作することを確認した場合にのみ301に変更します。

テストする前にブラウザのキャッシュをクリアする必要があります。

1
MrWhite