2011-11-23 146 views
2

我有一个分类网站。在这个网站上,我存储在数据库中,用户访问历史目的的每个产品页面,以便他可以查看他访问的最后一个产品。php代码排除谷歌

问题是,当googlebot和其他人进入我的网站时,数据库充满了数以千计的entrys,因为它存在谷歌访问的上千个产品页面。

我试着用$_SERVER['HTTP_USER_AGENT']来试图找出当前用户是否是googlebot,如果是的话,不要在分贝中弄疼页面浏览量,这样它就不会被不友好的结果发送垃圾邮件,但他们似乎都没有工作,因为我得到谷歌IP的,并在我的数据库中识别它们。

你们中的任何一个人都知道在PHP中使用的一种好方法,以确保谷歌呆在外面?

+0

你不能使用标准的robots.txt吗? http://en.wikipedia.org/wiki/Robots_exclusion_standard –

+2

@JimH .:我认为提问者想要的只是不计算来自Google的浏览量,并不实际上将Google排除在网站之外。 – EdoDodo

回答

1

您可以使用以下snippit,它应该检测GoogleBot并且不会存储到数据库。

if (!strpos($_SERVER['HTTP_USER_AGENT'],"Googlebot")) { 
    // log to database 
} 
1

为什么在世界上你只想让谷歌停止?其他搜索引擎也可能为您的网站编制索引。 bing,雅虎,altavista和其他人呢?

您可以使用robots.txt禁止任何爬虫为您的网站建立索引。

让你的根目录的robots.txt,并把它下面:

User-agent: * 
Disallow:/

如果你要允许一些页面寿爬虫,您可以设置改为元

<meta name="robots" content="noindex, nofollow" /> 

并不是所有的机器人都“很好”,并且尊重这些标签。

+1

据我了解,原来的海报根本不想记录页面浏览量,不完全排除谷歌机器人。 – EdoDodo

+0

这只会排除索引网站的所有搜索引擎 - 你不能保证他们不会访问任何网站:)此外,这将从索引中删除网站...也许这也不是他想要的。 –

0
<?php echo $_SERVER['REMOTE_ADDR'];?> 

会给你客户的地址。然后你设置一个会根据你的逻辑检查ip来存储或放弃页面的会话变量。

@ Jan的回答是更好的方法。尽管这会切断所有机器人。

1

您是否想过所有其他机器人,蜘蛛和自动脚本在网上冲浪?他们也会填满你的数据库。并且发现所有这些用户代理,IP和其他特征是非常困难的。也许最好你限制历史让它说25个条目。

所以我的答案是:限制您的历史记录分录db 将历史记录存储在访客客户端的cookie中。