構文、正規表現、および変数情報を調べる多くの調査を通じて、これを行う方法を理解することができました。
.htacces、書き換え、および/または正規表現に慣れていない可能性のある他の人を助けるために、私が学んだことだけでなく、私の解決策も掲載しています。
私の問題を解決した最終製品:
RewriteRule ^blog/bid/[0-9].*/(.*)$ /$2? [R=301,L,NC]
完全な .htaccess は次のようになります。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^blog/bid/[0-9].*/(.*)$ /$1? [R=301,L,NC]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
基本的に私がしたことは、パターンに正規表現の魔法を使用することでした。数値は/bid/
常に変更されるため、正規表現を使用すると、「どのような数値が含まれていても、このパターンに一致する」と言うことができます。[0-9].*
[0-9]
0 ~ 9 の番号が付いた任意の文字に一致します。.
任意の 1 文字に*
一致し、その文字の 0 個以上のインスタンスに一致します。
次の部分は、魔法が起こる場所です。その後のスラッグ(パーマリンク)は でマッチし.*
、ラップされる()
と変数として保存されます。
その後、書き換えの置換部分でその変数を使用できます。は、パターン セクションで$1
を表す変数です。(.*)
より多くのセクションがラップされている場合は、、 などを使用して、初期パターンから保存された変数を使用()
できます。$1
$2
それが完了したら、フラグを設定R=301
します。コンテンツが完全に移動したことを検索エンジンに伝えるヘッダーリダイレクトを設定します。L
そのパターンが一致したときに適用される最後のルールです (つまり、書き換えを一致させようとし続けないでください)。NC
大文字と小文字を区別しないことを指定します。
ノート
ルールの間隔に特に注意してください。足りなかったり多すぎたりすると、ウェブサイト全体がダウンする可能性があります。flags セクションでは、コンマの間にスペースがないことに注意してください。それは私を噛んだ。