我们正在使用Drupal在啤酒厂的网站上工作。由于18岁以下的未成年人不允许查看该网站,所以访问的任何页面都通过模块(legalage)传递,如果用户点击“继续”以确认他/她的年龄超过18岁,则该网站会向用户显示将法定年龄保持为真。
问题是当搜索引擎机器人访问页面时,它们也会被重定向到法定年龄验证页面。我尝试使用以下脚本来确定PHP中的bot或浏览器:
$agent = $_SERVER['HTTP_USER_AGENT'];
if(( eregi("bot", $agent) || eregi("slurp", $agent) )) {
$_SESSION['legalage'] = true;
drupal_goto($_REQUEST['destination']);
$_SESSION['legalage'] = true;
drupal_goto($_REQUEST['destination']);
但它似乎不起作用。如果有人可以建议我如何处理这个问题,以便浏览器/人类必须通过年龄要求继续的事情和机器人可以直接访问内容。提前谢谢。
答案 0 :(得分:4)
存储会话数据通常需要客户端上的cookie。如果机器人不接受cookie,它将无法工作。 (除非您启用use_trans_sid
,这将为每个URL添加会话ID查询字符串。)
尝试对执行重定向的代码执行用户代理检查,然后再回到年龄验证页面。
顺便说一句,不要使用eregi
- 它已被弃用。请改用perl兼容的正则表达式函数。
答案 1 :(得分:1)
一种可能性可能是放置javascript重定向而不是标题重定向..机器人将无法处理它并且正常的ppl将被重定向..但是总会有一组ppl将hava javascript禁用..但是这个群体很小,一般都超过18岁。)
答案 2 :(得分:1)
你的逻辑是正确的。但我不确定机器人是否接受并回应会话cookie。我建议在内部的页面上需要$ _SESSION ['legalage'] = true;你还要为机器人添加代码来忽略这个逻辑。
仅供参考,Google网站管理员工具添加了一个方便的新功能,可以显示服务器在Google bot访问时发送的实际内容。继续使用它!
答案 3 :(得分:0)
检测机器人/蜘蛛/爬行器并不是一门精确的科学我有一个过去曾使用的PHP数组,并针对用户代理进行了检查。该阵列包含大多数(如果不是全部)您希望访问您网站的主要蜘蛛/爬虫。你会感兴趣吗?或者你在寻找别的东西吗?