我一直在网上和StackOverflow上搜索答案,但我发现没有任何案例完全适用于我的情况。我正在使用Facebook Linter来调试FB抓取我的元标记的方式。如果我在一个简单的关于页面上使用它,它会很好地捕获所有内容,特别是og:url元标记。
当我刮掉正常的内容页面时,麻烦就开始了。虽然我已经三次检查我的标签是否形成良好,但FB Linter会从URL中删除URI,因此它报告og:url标记只有域名,electionstats.com /!
页面上实际显示的og:url标记如下所示:
我怀疑这是FB缓存页面的问题,因为在我的About页面上我做了快速的代码更改,更改了元标记输出,然后通过Linter重新运行同一页面,Linter显示这些快速变化,每次都是如此。但出于某种原因,当我在主要内容页面(/ search / pages)上尝试了几十种不同的URL组合时,我总是得到一个截止的URL,因此只有我主页上的元字段。
我甚至认为FB会忽略看起来像“搜索”页面的URL,所以我重新路由了URL和标题标签以使用术语“探索”而不是“搜索”,但这仍然做到了没有 - URI仍然会被切断。
答案 0 :(得分:0)
我在每个页面请求的开头都有代码,用于检测用户的浏览器是否接受cookie;如果没有,它会将用户踢回主页。与其他网络抓取工具一样,Facebook网络抓取工具不使用Cookie。因此,它一直回到主页并阅读主页的og / meta标签。我的代码更大的意外后果是,它会让所有网络抓取工具试图了解我的网站,包括Google的网站。
修复:如果用户代理字符串与普通网络抓取工具提供的UA匹配,则跳过cookie处理检查,例如http://www.cult-f.net/detect-crawlers-with-php/