0

在我的网站中,我通过 header("location") 进行了重定向,仅当用户登录不存在时才会执行,重定向到登录表单。我在这个网站上有一个 google+ 按钮,并且 google 总是遵循重定向。我无法理解为什么?

当我删除此重定向时,一切都很好。我试过这段代码:

if (!$user->user_exists && !getIsCrawler($userAgent)) {
header("Location: login.php"); }

为了检测爬虫,我使用这个函数:

$userAgent = $_SERVER['HTTP_USER_AGENT'];
function getIsCrawler($userAgent) { 
$crawlers = 'Google|msnbot|Rambler|Yahoo|AbachoBOT|accoona|' . 'AcioRobot|ASPSeek|CocoCrawler|Dumbot|FAST-WebCrawler|'
 .'GeonaBot|Gigabot|Lycos|MSRBOT|Scooter|AltaVista|IDBot|eStyle|Scrubby'; $isCrawler =
 (preg_match("/$crawlers/", $userAgent) > 0); return $isCrawler; }

我在这里做错了什么?我希望你们中的某个人对此有解决方案。

4

2 回答 2

0

用户代理很容易被欺骗。所以你可能要小心你的那部分代码并考虑重新评估它。

您应该查看 Gus Class 的文章,了解如何在需要将内容放在付费墙后面或登录时呈现必要的标记:http: //gusclass.com/blog/2012/08/15/rendering-schema-org -markup-for-content-behind-a-paywall/

基本上将必要的数据传递到您的登录页面可以让爬虫仍然检索他们需要的元数据,同时通过登录保护您的网站。

于 2012-08-27T19:36:03.310 回答
0

不幸的是,我认为不可能解决这个问题。众所周知,谷歌使用不同的用户代理(名称不详)来检查向搜索引擎和普通用户显示不同内容的网页,或所谓的伪装/门口页面。

于 2012-08-27T19:41:01.900 回答