PHPで検索エンジンのロボットをはじくには?


PHPのページにロボットがアクセスしてきたときに、処理をしないようにしたいと思います。
ディレクトリ単位ではロボット歓迎ですが、あるページだけ来てほしくないのです。

そこで、ロボット全般を指定する正規表現なりなんなりで、簡単にロボット全般をはじくコードを教えてください。

ロボットのエージェント全般を網羅するような具体的な書き方でお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/07/16 17:50:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:Cherenkov No.1

回答回数1504ベストアンサー獲得回数493

<meta name="Keywords" content="norobot">
<meta name="Robots" content="noindex,nofollow">
<meta name="googlebot" content="noarchive">
<meta name="Robots" content="noarchive">

をheadに書く。


参考

検索されにくくする

自社のウェブサイトを管理しているものです。 社員専用掲示板を、自社のウェブサイトに設置することを検討しています。 社員の意見交換の場として活用したいのですが、そう.. - 人力検索はてな

id:dingding

それは処理されないでなくインデックスされないだけ。

2010/07/13 22:36:48
id:niwa-mikiho No.2

回答回数516ベストアンサー獲得回数40

ポイント70pt

正規表現で検索エンジンのホスト名でマッチさせるのが一番手っ取り早いかなと



ホスト名は環境変数から持ってくるのではなく、gethostbyaddr で取得してください。

if($ipaddr == $hostname || (ereg("yahoo|google|naver|baidu", $hostname))){

print "content-type: text/plain\n\n";

print "access denny\n";

}

上記の例は、IP アドレスとホスト名が同じの場合 (ホスト名が取得できなかった事を示す) と、

国名や、それぞれのほかのサービスなどに関わらず、yahoo、google、naver、baidu のアクセスに

対してテキストのみを返しています。

もしもっとちゃんと拒否したいのであれば

header('Location: http://www.~', true, 302);

の様に 302 Moved Temporarily でリダイレクトさせてしまうのも手です。

こうすることで、インデックスから削除される可能性も出ます (時間は掛かるでしょうが・・・)

のようにページが移動した

  • id:koriki-WeKan
    HTMLのmetaタグに
    <META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW,NOARCHIVE">
    と書けばよい。
    http://tech.bayashi.net/pdmemo/robots.html
  • id:dingding
    それは処理されないでなくインデックスされないだけ。
  • id:ken3memo
    robots.txt ファイルを使用してページをブロック
    http://www.google.com/support/webmasters/bin/answer.py?hl=jp&answer=156449
    も不作法な海賊版ロボットにお宝を知らせいてるような物でダメなんですよね。
    PHPで
    1.UAがXXXX だったら 飛ばす、ページを途中で止めて読み込ませない方法 など

    2.XXXXのUA一覧を知りたいってことですか?
    不作法な海賊版ロボットがUAを携帯など(DOCOMO)に偽装しているのはしかたないとして、、、

  • id:ken3memo
    ↑変なコメント残してスミマセン、読み込みを途中で止めるなんてムリですよね、読み込んでから処理するんだし。。。

    http://www.google.com/support/webmasters/bin/answer.py?hl=jp&answer=156449

    robots.txt ファイルを手動で作成する
    で +を押すと、ウェブ ロボット データベース が http://www.robotstxt.org/wc/active.html 書いてあるかなぁ。

    一般的な robots.txt に従うロボット対策でいいなら、
    User-agent: *
    Disallow: /xxxxx/001.html
    Disallow: /xxxxx/025.html
    Disallow: /xxxxx/074.html
    ↑ここにお宝がある、読まれたくない文章がある・・・と知らせてしまうけど。
  • id:const
    Disallow は先頭一致なので必ずしも .html まで書く必要はないですね。

    ・User-Agent の特徴ではじく
    ・Cookie の有無で判別する
    のようなソースは書けますが、有名な「メールアドレスの正規表現」の感覚でロボットを網羅した正規表現を、というのはあまり現実的でない気がします。
  • id:pacochi
    1. const さんの示した方法で、かなりきつめにアクセス制限をかけておく
    2. POST メソッドの時に限りアクセス制限をゆるくする
    3. とばっちりを食らった生身の人向けに、該当ページに POST メソッドでアクセスする仕組みを用意しておく

    というような方法もあります。
    メールアドレス収集やスパム投稿目的のボットは来てしまうかもしれませんが、検索エンジンのボットなら、おおむねはじけると思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません