首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当Googlebot爬行站点时禁用会话

当Googlebot爬行站点时禁用会话
EN

Stack Overflow用户
提问于 2014-01-22 08:16:21
回答 3查看 2.7K关注 0票数 1

我的PHP5.3服务器正在使用use_only_cookies dans处理没有use_trans_id的会话,会话文件保存在一个专用目录中。

当Googlebot或或任何其他非cookie支持的浏览器爬行网站时,将为每个请求的页面创建一个不同的会话文件。我担心这些文件将免费使用大量的空间磁盘。

是否可以禁用某些用户代理或不使用cookie的浏览器的会话文件?我不想用trans_id功能代替会话,因为它可能有SEO的缺点。

是否有Apache/PHP指令、设置或任何其他技巧来具有以下行为:

  • 如果浏览器不支持cookie (通过用户代理黑名单或其他方法),则始终使用相同的会话文件或根本不使用会话文件。
  • 对于任何其他浏览器,请使用标准会话文件处理程序。
EN

回答 3

Stack Overflow用户

发布于 2014-01-22 08:25:01

当然,您可以检查$_SERVER['HTTP_USER_AGENT']的内容并检查已知的机器人。如果它是一个机器人,那么就不要调用session_start() (尽管如果您的逻辑依赖于代码中的$_SESSION vars,这也会产生不想要的效果)。

票数 2
EN

Stack Overflow用户

发布于 2017-11-29 10:52:15

代码语言:javascript
运行
复制
if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "googlebot")){
    $sid = md5("mygooglebotsessionid");
    session_id($sid);
}

将其添加到session_start()之前;

您可以为机器人设置唯一的SessionID,而不是禁用用于机器人的会话。每次机器人使用相同的SessionID,所以它不会浪费您的会话存储。

PS:不确定SEO的缺点。

票数 2
EN

Stack Overflow用户

发布于 2014-01-22 15:19:20

if (strpos($_SERVER[‘HTTP_USER_AGENT’],"Googlebot") === false) { session_start(); }

但我不确定这是否值得。会话GC非常有效,如果有人将用户代理重写为googlebot,他将不会有会话。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21277534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档