Wordpressで運用サイトで、不要なページを約1000ページほど削除しましたがGoogle検索に削除したページが表示されます。
そのため.htaccessでページを削除しようと思っていますが行数が多いため取りまとめて記述したいと思っています。
・例1
http://www.example.com/dobusu/inu/4000 から 4999
・例2
http://www.example.com/dobusu/saru/7000 から 7300 まで
※例1、2は 数字連番の孫ページだけ削除し、その一階層上の子ページは残したいです。
4000番代と7000~7300までを削除し、5000番、6000番代は残すようになります。
・例3
http://www.example.com/sakana/kaisui/●●●●
※例3は数字の連番となる全ての孫ページと一階層上の子ページを削除したいです。
htacessの書き方を教えていただけますでしょうか。
また、記述方法について不明な点があります。
・一部ページのパーマリンクが日本語となっています。htaccessへの記述はエンコードしたほうが良いのでしょうか。
・複数の削除を記述する場合、
RewriteEngine Onは1箇所で良いのでしょうか?
1つの削除に対しRewriteCondとRewriteRuleはセットで、削除数分だけ繰り返すのでしょうか
よろしくお願いいたします。
RewriteEngine On
# 例1
RewriteRule ^/dobusu/inu/4[0-9][0-9][0-9]$ - [R=404,L]
# 例2
RewriteRule ^/dobusu/saru/7[0-3][0-9][0-9]$ - [R=404,L]
# 例3
RewriteRule ^/sakana/kaisui/[0-9]*$ - [R=404,L]
> 一部ページのパーマリンクが日本語となっています。htaccessへの記述はエンコードしたほうが良いのでしょうか
エンコードしましょう。
> RewriteEngine Onは1箇所で良いのでしょうか?
1つの.htaccessに1箇所です。
> 1つの削除に対しRewriteCondとRewriteRuleはセットで、削除数分だけ繰り返すのでしょうか
RewriteCondは次に出現するRewriteRuleにしか作用しませんので、必要なら繰り返し書くことになります。
ただ、RewriteCond自体をOR条件で複数書くことができます。
あと、RewriteRuleのパスに正規表現を使えますので、そもそもRewriteCondが必要ないことも多いかと思います。
まあ、根気よく404を返し続ければそのうちGoogleキャッシュも消えるかと思います。
待てない場合は削除依頼。
というか、不要なページにアクセスがあるということは、適切なページにリダイレクトで誘導してあげるべきだと思います。
削除したいのはいわゆる「Googleキャッシュ」と呼ばれる物だと思うのですが、キャッシュデータの管理者はGoogleですので、問題のデータは.htaccessの効果が及ばないところ(他サーバ)に保管されています。
Google から情報を削除する
https://support.google.com/webmasters/answer/6332384?hl=ja
> Google 検索結果から情報を削除する
以下の部分を参照。
> URL の削除リクエスト
https://www.google.com/webmasters/tools/url-removal
の部分がキャッシュ削除の本丸だと思うのですが、ログインしないと閲覧できないページになっています(が、私はアカウントを持っていないのでこの先は確認できません)。
ログインとか無かった時代は気軽に削除できた半面、登録ページを嫌がらせで削除されてしまう事もあったので、そうした荒らし行為への対策を強化した結果なのかなと思います。ただ、その頃の記憶によりますと、指定した特定のページだけ削除なんていう便利な機能は無かったと思うので、一度キャッシュの全削除をリクエストしたうえで、改めてクロールに引っかかるのを待つしか方法がないかもしれません。
もしキャッシュを削除しない場合ですが、規約違反などの理由で数年前に削除されたらしいYahoo!知恵袋の古い質問が普通に検索ヒットするのが実情ですので、削除依頼しない限りはずっとキャッシュが残ったままかも。