我正在构建一个网站,我将从主页打开网站上的一些其他 URI 到灯箱(AJAX)中,我想使用 HTML5 推送状态和哈希爆炸作为后备来管理状态的变化。
现在我希望这些网址可以抓取并且 Facebook 可以分享/喜欢..
如果用户浏览器支持 HTML5 推送状态,没问题,他可以分享 URL(例如 : http://myserver/example
),Facebook 会在静态内容中找到合适的 OG 元数据。
但是如果用户使用 HTML4 浏览器,他将有一个类似http://myserver/#!/example
. 无论如何我希望他能够通过Facebook分享它......
现在看起来 Facebook 支持 _escaped_fragment_ 替换方法,所以我只是将请求从http://myserver/?_escaped_fragment_=/example
to重定向http://myserver/example
,每个人都应该很高兴......</p>
所以我在我的 htaccess 中添加了一个重写条件:
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=([^&]*)
RewriteRule .* http://%{HTTP_HOST}/%1? [R=301,L,NE]
我的问题是我不能让它与 Facebook 一起工作,使用 Facebook linter 它似乎总是在 hashbang 之后的 URL 部分一直进行百分比转义,导致 url 像
http://myserver/%2Fexample
which 降落到 404 :-(
有人知道如何欺骗 Facebook 不转义这部分 URL 吗?我可以在 apache mod_rewrite 方面做点什么吗?
我也对任何其他有效的 ajax 可抓取/可取的 URL 策略持开放态度;)