サイトの移行と古いリンクに問題があります。現在、サーバーの移行だけでなく、CMSの移行でもありました。サイトはumbraco(asp.net)からwordpressに移行しました。問題は、Googleが古いURLにインデックスを付けたことです。リンクをリワークしてそれらを機能させる方法があります。このメソッドを使用してリンクをリワークし、リダイレクトにWPプラグインを使用しました。問題は、このプラグインの多くのリンクへの道があるということです。
私は、htaccessを使用してリンクを動的にリワークする方法があるのだろうかと考えていました。そのため、リンクの書き換え方法は次のとおりです。
http://example.com/something/XXXXX-some-text.html
-->
http://example.com/something/some-text-XXXXX
where XXXXX is some number between 100 and 100,000
この方法は機能しますが、唯一の問題は60,000以上のリンクがあることです...
助言がありますか?
追伸スキップする必要がある他のリンクもいくつかあります。それらを再処理する方法がないためです...
http://example.com/something/XXXXX-some-text.html
-->
http://example.com/something/some-text-XXXXX
XXXXは100〜100,000の数字です
「100,000」には文字通りカンマが含まれていないと思いますか?そして、数字の後のハイフン(-
)はリテラルであると想定しているため、数字の後に1つのハイフンが続き、その後に<some-text>
が続きます。そして、その<some-text>
は、大文字、小文字、数字、ハイフンのみで構成できます。それともXXXXX<sometext>.html
であるはずですか?
ルートの.htaccessファイルで次のようなものを試すことができます。これを行う必要がありますbefore any WordPress_ rewrites。
RewriteRule ^(something)/(\d{3,6})-([a-zA-Z0-9-]+)\.html /$1/$3-$2 [R=302,L]
これにより、元のリクエストのクエリ文字列もパススルーされます。クエリ文字列を削除する必要がある場合は、RewriteRule
置換の最後に?
を追加します(またはApache 2.4の場合はQSD
フラグを含めます)。
正規表現の数値は、文字通り、3〜6文字の数字の文字列です(両端を含む)。文字通り、文字通り100〜100000ではありません。
これは現在302(一時)リダイレクトです-ブラウザによってキャッシュされないため、テストが容易になります。正常に機能していることが確認できたら、これを301(永続)に変更します。
追伸スキップする必要がある他のリンクもいくつかあります。それらを再処理する方法がないためです...
このパターンに従っているがスキップする必要があるURLがある場合、いくつかの例外を作成する必要があります。このルールの前にある条件(RewriteCond
)です。何かのようなもの:
RewriteCond %{REQUEST_URI} !^/something/123-exclude-this\.html
RewriteCond %{REQUEST_URI} !^/something/456-and-exclude-this\.html
RewriteRule ^(something)/(\d{3,6})-([a-zA-Z0-9-]+)\.html /$1/$3-$2 [R=301,L]
または、スキップする必要があるURLのパターンがある場合、これらを適切な正規表現と組み合わせることができます。
CondPattern(RewriteCond
ディレクティブの2番目の引数)の!
プレフィックスは、正規表現を無効にします。したがって、上記のルールセットは基本的に、要求が指定されたパターンに一致し、thisまたはthatでない場合はリダイレクトします。
編集:「何か」が可変の場合、各選択肢をRewriteRule
パターンに入れることができます。
RewriteRule ^(category/subcategory|category/sub/subsub)/(\d{3,6})-([a-zA-Z0-9-]+)\.html /$1/$3-$2 [R=301,L]
または、URLに応じて(および競合が発生するかどうかに応じて)完全に汎用にすることもできます。
RewriteRule ^(.+)/(\d{3,6})-([a-zA-Z0-9-]+)\.html$ /$1/$3-$2 [R=301,L]
$1
、$2
および$3
は、RewriteRule
pattern内の括弧で囲まれたサブパターン(キャプチャされたグループ)への後方参照です。したがって、$1
は、URLパスで一致する(.+)
で置き換えられます。