SunMonTueWedThuFriSat
Jun
2
8
2
1
0
4
2
3
0
3
3
0
1
2
6
3
4
1
6
2
2
4
2
0
4
2
1
1
2
3
6
2
6
0
0
Jul
6
1
1
0
0
1
2
1
2
1
2
1
1
2
1
0
0
0
1
0
0
2
0
0
1
5
2
3
Aug
6
4
0
1
1
1
2
6
3
0
1
0
0
3
3
8
1
1
3
1
1
0
2
1
1
3
0
2
3
3
2
0
4
1
2
Sep
0
1
3
3
1
0
3
0
1
1
0
3
1
0
3
6
14
1
0
0
0
8
2
3
1
0
0
2
Oct
6
1
0
0
1
0
3
0
0
1
0
2
0
1
0
0
0
3
5
0
0
0
0
0
0
2
1
0
Nov
0
1
0
1
0
5
0
1
4
1
0
0
0
0
2
0
1
2
2
0
0
0
0
0
0
2
1
1
1
0
5
3
7
0
2
Dec
4
2
0
2
1
0
0
1
2
1
0
0
0
0
0
0
1
0
3
2
4
1
7
4
1
3
11
2
Jan
3
2
2
9
2
1
11
3
3
3
5
6
3
3
13
6
2
1
1
3
8
4
4
5
1
3
1
5
Feb
5
4
2
2
2
3
0
0
5
2
2
0
0
0
1
0
1
0
2
1
3
0
4
4
3
3
0
3
Mar
4
0
5
1
0
1
1
0
0
1
3
1
1
2
1
1
1
4
0
1
2
1
1
1
0
1
2
0
3
1
3
4
0
2
3
Apr
1
1
0
1
0
4
5
7
3
2
1
2
1
1
2
0
0
1
0
2
2
2
1
3
1
2
0
9
May
4
7
0
0
1
2
1
2
2
2
3
2
0
1
1
0
0
4
1
0
2
2
4
2
0
2
1
2
1
0
0
0
0
0
0
🍔Re:5055◆その適用順序は半分(前半が)間違っていますのでご注意下さい。robots.txtでクローラーをブロックすると検索避けができなくなる点は、Google自身が公式ヘルプで明言しています。(「インデックスに登録してはいけない」という指示自体が読めなくなるため)
後半の「metaタグ→それでも読まないお行儀悪いものは.htaccess」は正しい順序ですが、最初に「まずはrobots.txtを読んでもらう」とすると、Googleでは検索避けに失敗します。(※robots.txtでGoogle等の紳士的なクローラーをブロックしていないなら問題ありませんが。)
🍔Re:5053◆Googleに関してはその通りです。.htaccessでブロックしてもいけないし、robots.txtでブロックしてもいけません。なぜなら、ブロックされると「登録するな」という指示自体も読めないからです。
- もちろん、robots.txtでブロックされているならクローラーはページの内容を読みませんから、(ページ内に何が書かれているのかの情報は得られないため)インデックスに登録される可能性は減りはします(※なので「この方法で検索避けは成功する」と思えるケースもあるでしょう)。
- しかし、登録禁止だという指示自体も伝わっていないため、よほど評価値の高い外部サイトからリンクされている場合などの外部要因次第では(リンク元ページにあるリンクテキストなどのように「読むことを禁止されていない場所にある情報」を用いて)インデックスに登録される可能性が残ります。
なので、少なくともGoogleに関しては、.htaccessはもちろんrobots.txtでもブロックしてはならず、meta要素だけで指示するのが最も確実です。※2000年代からある古典的な話ですが、「出口」という検索語でググると、Yahoo! Japanがヒットします。これは「出口」というリンクテキストを使ってYahoo!にリンクしているサイトが多いことによる影響です。つまり、「どんなリンクテキストを使ってリンクされているのか」という情報も検索サイトに反映される(要素の1つになる)のです。なので、robots.txtでページの中身を読むことだけを禁止しても(&.htaccessでページ自体を読めなくしても)、インデックスに登録される可能性はあります。
したがって、インデックス登録を避けるには、ページそのものに書かれた登録禁止の指示を確実に読ませる必要があるため、ブロックしてはいけないのです。
……とはいえ、世の中に存在するクローラーはGoogleやBingのような比較的紳士的に動作するものだけではありません(※検索のシェアはGoogleが1強ですが)。metaタグの存在を無視してインデックスに登録しようとするクローラーも存在するでしょう。なので、metaタグを読まないような無作法なクローラーに対しては、何らかのブロックをするほかありません。(そのような無作法なクローラーはrobots.txtだって読まないでしょうから、.htaccessでサーバ側に応答を拒否させるしかないでしょう。)
したがって、検索避けを厳密にしたいなら、以下のような方策が必要です。
- まずは、metaタグを読ませる。(←紳士的なクローラーはこの指示に従うので、まずはこれを確実に読ませる必要がある。)
- (次に、metaタグを無視するようなBotだけに限定して、robots.txtでブロックする。)
- 最後に、1も2も無視するようなBotだけに限定して、.htaccessでブロックする。
この順序です。(metaタグの指示に従わないBotはrobots.txtだって読まないでしょうから、.htaccessでブロックできるなら2は省略して良いですが。)この順序を逆にしてしまうと(=あらゆるクローラーを.htaccessでブロックすると)、そもそもmetaタグを書く意味がなくなってしまいますから注意して下さい。なぜなら『あらゆるクローラーがmetaタグを読めなくなる』からです。
Googleだけを対象にするなら、そもそもmetaタグだけで充分です。他の無作法なBotも対象にしたい場合は、「Googleのような紳士的なクローラーにはアクセスを許可しつつ、無作法なクローラーだけを拒否するような .htaccessを書く」必要があります。
※なお、robots.txt自体に意味がないわけではありません。検索サイト以外のクローラー(最近ではAI学習用のBotも多いですね)をブロックする用途や、「クロールそのものは許可したいがクロール頻度を低く抑えたい(=負荷軽減)」場合などの指示には役立ちます。
とはいえ、Googleはrobots.txtに書かれた「クロール頻度の指示」は無視するんですけども……。┌(:3」└)┐
🍔Re:5054◆その場合は、2つの方法があります。
- 『サイトマップページモードをカテゴリ限定で表示させたページ』をiframeで読み込んで並べるページを作る。
- 『サイトマップページモードをカテゴリ限定で表示させたページ』の中身をJavaScriptで読み込んで1ページに合成するページを作る。
iframeは(コンテンツが可変長の場合に)サイズ調整が難しいので、②の方が柔軟に配置できるでしょうね。必要な箇所だけを抽出するのも簡単ですし。