1

我们正在使用 Drupal 开发一家啤酒厂的网站。由于未满 18 岁的未成年人不得浏览本网站,因此访问的任何页面都会通过一个模块(法律),如果用户单击“继续”以确认其年龄超过 18 岁,则该网站将显示给用户将法定年龄保存为真实。

问题是当搜索引擎机器人访问这些页面时,它们也会被重定向到法定年龄验证页面。我尝试了以下脚本来确定 PHP 中的机器人或浏览器:

$agent = $_SERVER['HTTP_USER_AGENT'];
if(( eregi("bot", $agent) || eregi("slurp", $agent) )) {

$_SESSION['legalage'] = true;
drupal_goto($_REQUEST['destination']); 

}

但它似乎不起作用。如果有人可以建议我如何处理这个问题,以便浏览器/人类必须通过年龄要求继续事情并且机器人可以直接访问内容。先感谢您。

4

4 回答 4

4

存储会话数据通常需要客户端上的 cookie。如果机器人不接受 cookie,它将无法工作。(除非您启用use_trans_sid,它将向每个 URL 添加会话 ID 查询字符串。)

尝试围绕执行重定向回年龄验证页面的代码而不是年龄验证页面本身进行用户代理检查。

顺便说一句,不要使用eregi- 它已被弃用。请改用与 perl 兼容的正则表达式函数。

于 2009-10-16T08:35:29.397 回答
1

你的逻辑是正确的。但是,我不确定机器人是否接受并回显会话 cookie。我建议在需要 $_SESSION['legalage'] = true; 的页面深处 您还添加代码以忽略机器人的此逻辑。

仅供参考,谷歌网站管理员工具刚刚添加了一个方便的新功能,当谷歌机器人访问它时,它会向你显示服务器发送的实际内容。继续使用它!

于 2009-10-16T09:59:11.010 回答
1

一种可能性可能是放置 javascript 重定向而不是标头重定向 .. 机器人将无法处理它,并且正常的 ppl 将被重定向.. 但是总会有一群 ppl 将禁用 javascript ......但是小组会很小,通常超过 18 岁 :)

于 2009-10-16T09:14:17.723 回答
0

检测 bots/spider/crawlers 不是一门精确的科学我有一个 PHP 数组,我过去使用过它并针对用户代理进行了检查。该数组包含大多数(如果不是全部)您想让访问您的站点的主要蜘蛛/爬虫。你会对此感兴趣吗?还是您在寻找其他东西?

于 2009-10-16T08:34:19.720 回答