【发布时间】:2015-10-25 10:45:07
【问题描述】:
我正在构建一个网站,我将从主页将网站上的其他一些 URI 打开到灯箱 (AJAX) 中,并且我想使用 HTML5 推送状态和哈希爆炸作为后备来管理状态更改。
现在我希望 url 可以抓取并且 Facebook 可以分享/喜欢..
如果用户浏览器支持 HTML5 推送状态,没问题,他可以分享 URL(例如:http://myserver/example),Facebook 会在静态内容中找到合适的 OG 元数据。
但如果用户使用 HTML4 浏览器,他将有一个类似http://myserver/#!/example 的 url。我希望他无论如何都能通过 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 linter 它似乎总是在 hashbang 之后的 URL 部分进行百分比转义,导致 URL 像
http://myserver/%2Fexample 到达 404 :-(
有人知道如何欺骗 Facebook 不转义这部分 URL 吗? 我可以在 apache mod_rewrite 方面做点什么吗?
我也对任何其他有效的 ajax 可抓取/喜欢的 URL 策略持开放态度;)
【问题讨论】:
标签: ajax facebook mod-rewrite pushstate hashbang