如何限制回访者的内容而不冒愤怒的机器人的风险?

时间:2013-10-29 14:09:43

标签: javascript php search-engine-bots

我正试图在website.com上的某些页面上向新访问者展示一些内容(介绍)。如果用户已经看过它,我希望再次“不打扰”用户。

让我们说用户进入website.com/cool-article然后我会在顶部向用户显示介绍 当用户点击website.com/useful-article-43时,该页面现在不应包含介绍。或者我应该继续介绍并在第二页上向下滚动用户? 如果用户是回访者,我也不想显示介绍。网站是用PHP构建的。

我的关注是 - 您选择哪种解决方案来确保SE机器人不会因为内容的不同而生气?根据我的理解,机器人从不带任何推荐信息。

选项:

1)查找$ _SERVER ['HTTP_REFERER'] ($ httpReferer = isset($ _ SERVER ['HTTP_REFERER'])?$ _SERVER ['HTTP_REFERER']:null;)
如果它设置为mywebsite.com或NULL
做A或B

2)存储并检查用户访问页面时设置的cookie。 在session_start(); if!$ _ SESSION ['intro']
做A或B
$ _SESSION [ '介绍'] = 'introSeen';

3)通过JS / localStorage?
(不必要的内容加载?)

你会怎么做?

(A和B)

A)不要加载对页面的介绍

  • +点击已保存链接的用户到达页面时以及用户的加载时间减少。
  • - 混乱的风险
  • - 页面看起来不一样。

B)向用户滚动到文章,继续介绍。

  • +如果用户向上滚动,页面看起来与之前相同。
  • +网站始终为所有用户和机器人提供相同的内容。
  • - 不必要的内容加载

1 个答案:

答案 0 :(得分:1)

我解决此问题的方法是使用客户端持久存储,例如cookie或localStorage。这样,始终提供相同的内容,并且用户的浏览器决定是否显示介绍。

如果用户未访问过,可以轻松实现在内容上方创建介绍的JavaScript解决方案:

(function firstTime() {
    var introduction = '<div id="firstTime">Hello! This is your first time here!</div>';
    if (localStorage.visited === undefined) {
        document.body.innerHTML = introduction + document.body.innerHTML;
        localStorage.visited = true;
    }
})();

您可以修改它以适用于您的情况,或使用Cookie以实现更好的向后兼容性。

查看实际操作:http://jsfiddle.net/howderek/WYmkp/5/