web-dev-qa-db-ja.com

.htaccess - '-number /'で終わる重複した投稿を-number /なしの同じURLにリダイレクトする

重複した投稿が多数あり、それらを削除したいのですが、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]+/ - > ' - 'とタイトルの数が一致します

ありがとうございます。

2
andresgl

あなたは近いです。 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);
0
mmm