现在我想要的URL可以抓取和Facebook可共享/喜欢..
如果用户浏览器支持HTML5推送状态,没问题,他可以共享URL(例如:http:// myserver / example),而Facebook会在静态内容中找到适当的OG元数据.
但是如果用户使用HTML4浏览器,他将会有一个像http:// myserver /#!/ example的网址.我希望他能够通过Facebook分享它…
现在看起来像Facebook支持_escaped_fragment_替换方法,所以我尽管我只是重定向请求从http:// myserver /?_escaped_fragment _ = / example
到http:// myserver / example
每个人都应该开心…
所以我添加了一个重写条件到我的htaccess:
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=([^&]*) RewriteRule .* http://%{HTTP_HOST}/%1? [R=301,L,NE]
我的问题是,我不能使它与Facebook的工作,与Facebook不同,似乎百分之百逃脱所有的时间部分的URL后的hashbang,导致网址像
http:// myserver //到404的例子:-(
有人知道如何欺骗Facebook不能逃避这部分网址?
我可以在apache mod_rewrite方面做些什么吗?
我也可以使用任何其他有效的ajax crawlable / likeable URL策略;)
以下是内容:
不能打开图形标记必须存在于使用纯HTTP GET GET的HTML页面上.
这是因为当用户与OG对象(例如执行动作等)进行交互时,Facebook将在OG URL上执行HTTP GET,并期望看到标记中返回的OG标签.
解决方案是为每个对象创建规范的URL.这些URL包含基本的HTML标记,包括OG标签.
对这些URL的请求,如果您看到包含’facebookexternalhit’的传入的用户名字符串,那么您将呈现HTML.如果不这样做,您会将302重定向到您的ajax网址.在ajax网址上,您喜欢的按钮和您发布的任何OG操作都应指向规范的URL对象
例:
作为用户,我在http://yoursite.com/#!/artists/monet.我点击一个类似的按钮,或发布一个动作,但是类似按钮的href参数,或者当您发布动作时对象的URL应该是该对象的web可以标记的网址 – 在这种情况下,也许是http://yoursite.com/artists/monet
当使用浏览器的用户点击http://yoursite.com/artists/monet时,您应该将其重定向到http://yoursite.com/#!/artists/monet,但是如果传入的用户名称是Facebook的刮刀,则只需返回代表艺术家Monet的标记.
对于现实世界的例子,请参见Deezer,Rdio和Mog,他们都使用这种设计模式.