如何让 Facebook 调试器读取规范 URL?
Posted
技术标签:
【中文标题】如何让 Facebook 调试器读取规范 URL?【英文标题】:How to get Facebook Debugger to read canonical URL? 【发布时间】:2014-03-20 19:23:53 【问题描述】:所以当我使用 Facebook 的 Open Graph Object Debugger 测试我的网站时,就会发生这种情况:
它不喜欢个人资料页面后面的尾随数字。但我已经正确定义了这两个:
<meta property="og:url" content="http://www.website.com/profile/139">
<link rel="canonical" href="http://www.website.com/profile/139">
我已经尝试了几个小时,它只是不断重定向到主页:
有什么我可以添加到我的.htaccess
文件或 php 标头来防止此 301 重定向的吗?
可能与 Facebook/Google 处理 URL 参数的方式有关:http://gohe.ro/1fpOA0N
【问题讨论】:
找出导致此重定向的原因,而不是试图阻止它!如果您需要帮助,您需要提供您已有的规则。 能否提供你的页面的实际url,方便调试。 如果用户没有定义任何用户代理或禁用了 javascript,您是否可以将用户重定向到主页?或者在查看个人资料页面之前是否有任何登录程序? 【参考方案1】:分析器是我们的域名托管服务商 WP Engine 的问题,它欺骗蜘蛛忽略页面 URL 末尾的纯数字字符串。具体适用于:
Googlebot(Google 的蜘蛛) 啜饮! (雅虎的蜘蛛) BingBot(Bing 的蜘蛛) Facebook OG/调试器例如以下网址:
http://www.website.com/profile/12345
将被这些机器人解释为:
http://www.website.com/profile
但是,如果字符串是非数字的,机器人会识别它。这样做是出于缓存目的。但同样,这仅适用于 WP Engine 和其他一些托管服务提供商。
【讨论】:
这也为我们修复了它。我们询问了 WP Engine,他们禁用了“Redirecting Bots”选项。请参阅“何时应关闭?”该文章中的部分解释了对 Facebook 的 URL 调试器的影响。在他们这样做之后,我们刷新了缓存并重新抓取了 Facebook 对象调试器,og:url 保留了数字结尾,因此在共享它时会显示正确的图像和其他元数据。谢谢! 这让我有些头疼。非常感谢!【参考方案2】:Facebook 将 og:url 元标记视为您页面的规范:
<meta property="og:url" content="http://www.yoursite.com/your-canonical-url" />
如果您的规范网址正在重定向,您实际上是在创建一个循环。 不要从您的 Canonical 重定向。 规范是应该被认为是蜘蛛的更好选择的页面。 如果页面有 Canonical url 标签,则意味着它不是最佳/默认页面,而是 Canocical 的较小变体。
【讨论】:
以上是关于如何让 Facebook 调试器读取规范 URL?的主要内容,如果未能解决你的问题,请参考以下文章
通过开放图向 Facebook 提交对象不起作用,但在 Facebook 的对象调试器中测试 URL 后可以工作?
Facebook - URL 返回了错误的 HTTP 响应代码
如何使用 Facebook 的 API 检查用户是不是喜欢我的 Facebook 页面或 URL