1

ブログを Wordpress に移行しており、既存のすべての URL に対して 301 を設定する必要があります。

ルートからの既存の構造は次のとおりです。

/blog/bid/148509/The-Role-of-a-Father

私たちがそれをする必要があるのは、に行くことです

/the-role-of-a-father(root から) 新しい Wordpress ブログで。

私が抱えている問題のいくつかは次のとおりです。

  1. RewriteRule元のエンディングスラッグを同じに保つ方法がわかりません。
  2. 後の数字/bid/は決して一貫していないので、それらの数字を無視し、その後のタイトルスラッグを無視しないものが必要です。
  3. 小文字に変換する最終 URL が必要です。

これは非常に多くのことを求めていることを私は知っています。ヘルプとリソースは非常に役立ちます。

4

2 に答える 2

3

構文、正規表現、および変数情報を調べる多くの調査を通じて、これを行う方法を理解することができました。

.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 セクションでは、コンマの間にスペースがないことに注意してください。それは私を噛んだ。

于 2013-06-06T21:22:12.057 に答える