在 htaccess 中使用 _escaped_fragment_ 可抓取的 AJAX
各位开发者好!
我们几乎完成了 ajax 网络应用程序的第一阶段的开发.在我们的应用程序中,我们使用哈希片段,如:
We are almost finished with developing first phase of our ajax web app. In our app we are using hash fragments like:
http://ourdomain.com/#!list=last_ads&order=date
我知道谷歌会获取这个 url 并以这种形式向服务器发出请求:
I understand google will fetch this url and make a request to the server in this form:
http://ourdomain.com/?_escaped_fragment_=list=last_ads?order=date&direction=desc
一切都很完美,除了……
everything is perfect, except...
我想将这种请求路由到另一个脚本
I would like to route this kind of request to another script
像这样:
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^$ /webroot/crawler.php$1 [L]
问题是,当我尝试在 crawler.php 中打印_r($_REQUEST) 时,我只得到:
The problem is, that when I try to print_r($_REQUEST) in crawler.php I get only:
Array
(
[_escaped_fragment_] => list=last_ads?order=date
[direction] => desc
)
我想要的是
Array
(
[list] => last_ads
[order] => date
[directions] => des
)
我知道我可以使用 php 来进一步打破第一个参数,但我不想 ;)
I know I could use php to further break the first argument, but I don't want to ;)
请指教
====================================================编辑...文本和逻辑中的一些更正
==================================================== EDIT... some corrections in text and logic
推荐答案
你忘记了 QSA 指令(大家都错过了点 =D)
Your forgot QSA directive (everyone missed the point =D )
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^$ /webroot/crawler.php%1 [QSA,L]
顺便说一下,你的 $1
是错误的......没用,因为它没有指代任何东西.所以这应该是:
By the way your $1
is well err... useless because it refers to nothing. So this should be:
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^$ /webroot/crawler.php [QSA,L]
告诉我这是否有效.
相关文章