重複した投稿が多数あり、それらを削除したいのですが、Googleは既にそれらのインデックスを作成しています。そのため、URLの末尾にあるパターン[-number]を持つすべての投稿を、番号なしの同じURLにリダイレクトするという考え
www.domain.com/category/post-title[-number]
からwww.domain.com/category/post-title
例:
www.domain.com/category/post-title/
www.domain.com/category/post-title-1/ --> www.domain.com/category/post-title/
www.domain.com/category/post-title-2/ --> www.domain.com/category/post-title/
www.domain.com/category/post-title-3/ --> www.domain.com/category/post-title/
www.domain.com/category/post-title-4/ --> www.domain.com/category/post-title/
www.domain.com/category/post-title-5/ --> www.domain.com/category/post-title/
www.domain.com/category/post-title-6/ --> www.domain.com/category/post-title/
私は.htaccessでいくつかの書き換えルールを試しましたが、まったく機能しませんでした。
例えばこれ
#RewriteRule ^/(.+)-[0-9]+/$ /$1 R=301
(.+)
- > '役職'の文字と一致します
-[0-9]+/
- > ' - 'とタイトルの数が一致します
ありがとうございます。
あなたは近いです。 WordPressによって作成された.htaccess
タグの間にある<IfModule mod_rewrite.c>
ファイルに以下を追加してください。
RewriteCond %{HTTP_Host}
RewriteRule ^(.+)-[0-9]+/$ /$1 [R=301]
別のプラグインによって変更されていない場合、.htaccess
は次のようになります。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# Custom Rewrite
RewriteCond %{HTTP_Host}
RewriteRule ^(.+)-[0-9]+/$ /$1 [R=301]
</IfModule>
# END WordPress
その結果、次のことが行われます。
http://example.com/category/post-title[-NUMBER]
にリダイレクトします。
http://example.com/category/post-title
404テンプレートでこれをテストしてリダイレクトを実行できます。
これを試して :
add_filter("404_template", function ($template) {
var_dump($GLOBALS["wp_query"]->query);
return $template;
}, 10, 1);