如何让 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 响应代码

打开图表 - 已发布操作中的已获取和规范 URL

如何使用 Facebook 的 API 检查用户是不是喜欢我的 Facebook 页面或 URL

如何使用 facebook 应用程序让 magento 多商店工作

如何从包含 Android 上自动下载图片的 url 中读取图片?