【问题标题】:JavaScript redirect causes undesired search engine resultsJavaScript 重定向导致不想要的搜索引擎结果
【发布时间】:2011-08-18 19:02:52
【问题描述】:

我有一个 HTML5 演示站点 (http://html5beats.com/),它使用 JavaScript 来检测某些 HTML5 功能。如果这些功能不存在,我会重定向到“请更改或升级您的浏览器”页面,因为它们对于使网站正常运行至关重要。

问题在于某些搜索引擎(特别是 Google)似乎遵循重定向。这会导致令人讨厌的“不支持您的浏览器”消息作为我网站的主要搜索结果。

我是否错误地使用了 JavaScript 重定向?我可以做些什么来告诉 Google 和其他搜索引擎哪个页面包含主要网站内容?

【问题讨论】:

    标签: javascript html redirect feature-detection


    【解决方案1】:

    首先,您应该使用robots.txt 告诉搜索引擎您不想列出的页面:

    其次,您还可以通过提供站点地图帮助 Google(和其他搜索引擎)了解您的网站:

    第三,您还可以考虑通过 JavaScript 中的 navigator.userAgent 属性捕获 Google 机器人(和其他网络爬虫)并在这些情况下阻止重定向的快速而肮脏的方法:

    在最后一种情况下,不要直接比较navigator.userAgent 字符串。而是使用 indexOf 在用户代理字符串中查找标识 URL,例如:

    function upgradeRedirect() {
     if (navigator.userAgent.indexOf("http://www.google.com/bot.html") != -1) return;
     document.location.href = 'upgrade.html';
    }
    

    【讨论】:

    • 好建议!我一直在避免使用 userAgent 来检测功能,但它看起来是对您提到的用于向网络爬虫提供提示的其他 2 种技术的一个很好的补充。
    【解决方案2】:

    考虑到他们正在抓取的用户代理,这实际上取决于您向 Googlebot 提供的内容。也许更好的策略是使用常规标题标签等加载常规内容,然后如果用户不支持 html5 并带有一些下载 html5 浏览器的链接,则在页面上弹出模式对话框。这样一来,您的列表对于网站:http://html5beats.com/ 仍然看起来不错。顺便说一句——我真的很喜欢你的网站/想法。

    【讨论】:

    • 这是一个有趣的选择。但是,我重定向的原因(以及脚本内联的原因)是为了避免加载其他无论如何都无法使用的脚本和资源。
    • 您可以异步加载资源(js/html/images),一旦您已经检测到它们不兼容 html5。
    猜你喜欢
    • 2010-11-04
    • 2011-01-15
    • 2012-06-01
    • 2012-08-07
    • 2014-01-29
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多