0

そのため、クローラーがメイン サイトにアクセスするのをブロックする年齢確認ページを作成しました。ただし、Cookie が設定されていない通常のユーザーではなく、クローラーが通過できるようにするコードを追加しました。しかし、それはうまくいかないようです。Facebookのものがリダイレクトされ、グラフ情報を開くために必要です。デバッガーにアクセスしてサイトの URL を入力すると、Facebook クローラーがリダイレクトされることが示されます。次のコードの検証はまったく機能しません。たとえば、ブラウジング セッションを googlebot に変更すると、リダイレクトされます。

<?php

if (!in_array($_SERVER['HTTP_USER_AGENT'], array(
  'facebookexternalhit/1.0 (+https://www.facebook.com/externalhit_uatext.php)',
  'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)',
  'Googlebot/2.1 (+http://www.googlebot.com/bot.html)',
  'Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)',
  'msnbot/2.0b (+http://search.msn.com/msnbot.htm)'

))) {
 if(!isset($_COOKIE['legal'])) {
        header("Location: verify.php");
    }
  if($_COOKIE['legal'] == "no") {
        header("Location: http://www.centurycouncil.org/");
    }
}

?>

以下のコードは、googlebot やその他の検索クローラーでは機能しますが、facebook では機能しません。Facebook がクロールしようとすると、Facebook はリダイレクトされます。

<?php

if((!strpos($_SERVER['HTTP_USER_AGENT'], "Googlebot")) && (!strpos($_SERVER['HTTP_USER_AGENT'], "bingbot")) && (!strpos($_SERVER['HTTP_USER_AGENT'], "Yahoo! Slurp")) && (!strpos($_SERVER['HTTP_USER_AGENT'], "facebookexternalhit")))
{
    if(!isset($_COOKIE['legal'])) {
    header("Location: verify.php");
    }
    if($_COOKIE['legal'] == "no") {
        header("Location: http://www.centurycouncil.org/");
    }

}
?>
4

1 に答える 1