2

我有一个分类网站。在这个网站上,我将用户出于历史目的访问的每个产品页面存储在数据库中,因此他可以查看他访问的最后产品。

问题是,当 googlebot 和其他人进入我的网站时,数据库会填满数千个条目,因为它会破坏谷歌访问的数千个产品页面。

我尝试了各种功能,$_SERVER['HTTP_USER_AGENT']试图找出当前用户是否是 googlebot,如果是,则不要让数据库中的页面视图疼痛,这样它就不会被无用的结果发送垃圾邮件,但它们似乎都不起作用,因为我得到了Google ip 并在我的数据库中识别它们。

你们中的任何人都知道在 php 中确保 google 退出的好方法吗?

4

4 回答 4

2

您可以使用以下代码片段来检测 GoogleBot 而不会存储到数据库中。

if (!strpos($_SERVER['HTTP_USER_AGENT'],"Googlebot")) {
     // log to database
}
于 2011-11-23T14:29:40.187 回答
1

为什么你只想把谷歌拒之门外?其他搜索引擎也可能会将您的网站编入索引。bing、yahoo、altavista 等呢?

您可以使用 arobots.txt来禁止任何爬虫为您的网站编制索引。

在您的根目录中创建一个 robots.txt 并将以下内容放入其中:

User-agent: *
Disallow: /

如果您想在某些页面上允许爬虫,您可以设置元

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

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

于 2011-11-23T14:23:46.970 回答
1

您是否考虑过网上冲浪的所有其他机器人、蜘蛛和自动脚本?他们还将填满您的数据库。找出所有这些用户代理、IP 和其他特征是地狱。也许最好将历史记录限制为 25 个条目。

所以我的回答是:限制历史数据库的条目将历史存储在访问者客户端的 cookie 中。

于 2011-11-23T14:33:24.277 回答
0
<?php echo $_SERVER['REMOTE_ADDR'];?> 

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

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

于 2011-11-23T14:24:50.557 回答