在 htaccess 中使用 _escaped_fragment_ 可抓取的 AJAX [英] Crawlable AJAX with _escaped_fragment_ in htaccess

查看:21
本文介绍了在 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]

告诉我这是否有效.

这篇关于在 htaccess 中使用 _escaped_fragment_ 可抓取的 AJAX的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆