そのため、クローラーがメイン サイトにアクセスするのをブロックする年齢確認ページを作成しました。ただし、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/");
}
}
?>