在htaccess中使用_escaped_fragment_进行可伸缩的AJAX

DS_*_*per 6 php ajax .htaccess url-rewriting web-crawler

大家好开发者!

我们几乎完成了开发我们的ajax Web应用程序的第一阶段.在我们的应用中,我们使用哈希片段,如:

http://ourdomain.com/#!list=last_ads&order=date
Run Code Online (Sandbox Code Playgroud)

我了解google将获取此网址并以此形式向服务器发出请求:

http://ourdomain.com/?_escaped_fragment_=list=last_ads?order=date&direction=desc
Run Code Online (Sandbox Code Playgroud)

一切都很完美,除了......

我想将这种请求路由到另一个脚本

像这样:

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^$ /webroot/crawler.php$1 [L]
Run Code Online (Sandbox Code Playgroud)

问题是,当我在crawler.php中尝试print_r($ _ REQUEST)时,我只得到:

Array
(
    [_escaped_fragment_] => list=last_ads?order=date
    [direction] => desc
)
Run Code Online (Sandbox Code Playgroud)

我想得到的是

Array
(
    [list] => last_ads
    [order] => date
    [directions] => des
)
Run Code Online (Sandbox Code Playgroud)

我知道我可以用php来进一步打破第一个参数,但我不想;)

请指教

================================================== ==编辑...文本和逻辑中的一些更正

Oli*_*ons 3

你忘记了 QSA 指令(每个人都错过了这一点 =D )

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^$ /webroot/crawler.php%1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)

顺便说一句,你的$1错了……没用,因为它什么也没指。所以这应该是:

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^$ /webroot/crawler.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)

告诉我这是否有效。