1

我的 PHP 5.3 服务器使用 use_only_cookies 处理会话,但没有 use_trans_id,会话文件保存在专用目录中。

当 Googlebot 或 Google Search Appliance bot 或任何其他不支持 cookie 的浏览器抓取网站时,会为每个请求的页面创建不同的会话文件。恐怕这些文件会白白占用大量磁盘空间。

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

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

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

3 回答 3

2

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

于 2014-01-22T08:25:01.233 回答
2
if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "googlebot")){
    $sid = md5("mygooglebotsessionid");
    session_id($sid);
}

在 session_start() 之前添加这个;

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

PS:不确定 SEO 的缺点。

于 2017-11-29T10:52:15.543 回答
1

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

But I'm not sure if it's worth it. Session GC is quite efficient, and if anybody will override user agent to googlebot, he will not have session

于 2014-01-22T15:19:20.797 回答