我有一个网站,运行在几种语言。我们使用像这样的 meta标记来定义爬虫的替代网址:
<link href="http://www.example.com/us/eng-us-url-here" hreflang="en-US" rel="alternate" />
<link href="http://www.example.com/gb/eng-gb-url-here" hreflang="en-GB" rel="alternate" />
<link href="http://www.example.com/fr/french-url-here" hreflang="fr" rel="alternate" />
等等
例如,当我使用Facebook调试器测试法语URL时,显示了一个错误:
Object at URL 'http://www.example.com/fr/french-url-here' of type 'website' is invalid because a required property 'og:title' of type 'string' was not provided.
即使所有的标签都在那里。点击'看看我们的scraper到底看到了什么为您的网址'显示,它实际上是在做一个奇怪的重定向:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head>
<body>You are being <a href="http://www.example.com/fr/french-url-here?fb_locale=en_GB/">redirected</a>.</body>
</html>
为什么会发生重定向呢?这肯定是在服务器端控制的,但是doctype是不同的,所以可能是别的原因。我们使用的是一个相当标准的Rails应用程序。
此外,如果它被重定向,为什么Facebook不跟随它?
2条答案
按热度按时间wljmcqd81#
线索在重定向的URL中,它附加了
?fb_locale=en_GB
。如果Facebook遵循惯例就好了,但根据https://developers.facebook.com/blog/post/2013/11/11/605/,如果你想让它与Open Graph一起工作,你需要做两件事:
1.在标题中包含
og:locale:alternate
元标记:1.根据URL参数中指定的语言呈现不同的OG标记:
检测Facebook参数并让它们多次抓取每个页面对我来说是多余的。相反,我切换了整个网站的区域设置,并根据当前的区域设置使用不同的OG部分:
apps/views/layouts/application.html.erb
:apps/views/layouts/_open_graph.en.html.erb
:正如你在上面看到的,这也让我有不同的OG图像每种语言:
oalqel3c2#
Facebookscraper没有跟随你的链接。如果你的主页使用重定向,这是Facebook将获得的数据。我强烈建议不要使用重定向,因为这对SEO不利。如果在你的网站代码中找不到scraper的结果,问题可能是服务器。我遇到过这样的问题。我的服务器习惯于设置cookie然后重新加载页面,这当然会混淆scraper。你应该使用php或类似的服务器端语言来检测你的用户位置并提供相应的数据。希望有帮助。