Ajax 这个简单的mod重写规则是怎么回事?

Ajax 这个简单的mod重写规则是怎么回事?,ajax,apache,mod-rewrite,redirect,web-crawler,Ajax,Apache,Mod Rewrite,Redirect,Web Crawler,作为谷歌抓取AJAX填充内容方法的一部分,我在.htaccess文件中获得了以下内容: RewriteEngine on #snapshot requests RewriteCond %{QUERY_STRING} _escaped_fragment_=([^&]+) RewriteRule ^.*$ system/snapshot_mode.php?project=%1 我使用如下URL触发规则 http://myserver.co.uk/?_escaped_fragment_=t

作为谷歌抓取AJAX填充内容方法的一部分,我在.htaccess文件中获得了以下内容:

RewriteEngine on

#snapshot requests
RewriteCond %{QUERY_STRING} _escaped_fragment_=([^&]+)
RewriteRule ^.*$ system/snapshot_mode.php?project=%1
我使用如下URL触发规则

http://myserver.co.uk/?_escaped_fragment_=token
…但它无法转到指定的页面。但是,如果我删除重定向的查询字符串部分,即将其更改为

RewriteRule ^.*$ system/snapshot_mode.php
怎么回事

[编辑]

我在规则中添加了一个[R-302],它现在尝试将我重定向到脚本,但通过一个损坏的本地机器文件路径,即

http://localhost/C:/xampp/htdocs/docula/system/snapshot_mode.php?project=token
…并给我一个403拒绝访问错误。

试试这个:

重写规则和查询字符串:

默认情况下,重写规则不会更改查询字符串。因此,在重写规则中不需要QueryString。如果您没有向替换URL添加参数,则RewriteRule将传入的查询字符串不变地传递

如果添加新参数,原始查询字符串将被丢弃,重写的URL将仅获取新参数

如果要组合原始查询字符串和新参数,可以使用查询字符串附加[QSA]标志附加它

在代码中,有一个新参数project=%1,没有[QSA]标志,因此_escaped_fragment.[^&]+参数被丢弃,导致重写条件失败

另请注意:

[R-302]的语法不正确。它应该是[R=302] [QSD]-在这种情况下,查询字符串丢弃标志不是我们想要的。
如果您向RewriteRule添加[R=302]标志-它将您重定向到何处?并给ms一个403拒绝访问错误。世界跆拳道联盟?正如您所看到的,它是可以解析并替换所有内容的。您的.htaccess是否位于服务器的根目录或文件夹中?它比根目录低一级。它比根目录低一级。然后您需要添加RewriteBase/文件夹,请尝试使用它。谢谢-它现在重定向。然而:1它不再默默地重定向;URL明显改变。如何恢复到静默重定向?2为什么需要根锚定路径?我本以为路径会相对于.htaccess文件的位置执行。相对URL确实有效,但只有在省略查询字符串时才有效。还是不确定这到底是怎么回事!
RewriteEngine on
RewriteCond %{QUERY_STRING} _escaped_fragment_=([^&]+)
RewriteRule ^.*$ system/snapshot_mode.php?project=%1 [L,QSA]