我有一个在网址中使用hashbang(#!)的Angular网站。要为抓取工具和Facebook bot(将#!更改为?_escaped_fragment)呈现这些页面,我有服务器端逻辑来添加元标记,打开图形标记等并呈现页面的特殊版本。
I.e:http://example.com/something/#!/a/special/url由Facebook使用http://example.com/something/?_escaped_fragment_=/a/special/url获取,我的服务器响应正确。
这很有效。 Facebook自己的开放图调试页面正确获取页面元数据。我可以在Facebook上分享这个页面。
但这些网页也有Facebook评论。它是由插入
的javascript添加的<div class="fb-comments fb_iframe_widget fb_iframe_widget_fluid"
data-href="http://example.com/something/#!/a/special/url"
data-numposts="5"
data-width="100%"
data-version="v2.3"
data-colorscheme="light"
</div>
显示评论框,一切都很好。我甚至可以发表评论,稍后再看。
但是:当Facebook向已注释的其他用户发送通知时,Facebook上显示的链接有一个?_escaped_fragment_而不是一个hashbang(#!),导致用户获得“特殊”Facebook页面。这对我来说很奇怪,因为转义片段应该仅由机器人使用,而不是在链接中显示。
Facebook通知上的链接采用此格式lsr.php?u=http%3A%2F%2Fexample.com%2Fsomething%2F%3F_escaped_fragment_%3D%a%252Fspecial%252Furl%252F17%252F&ext=......
在显示链接时,是否有某种方法可以避免Facebook显示此_escaped_fragment_?