使用Apache';s mod rewrite如何根据查询字符串重定向?

使用Apache';s mod rewrite如何根据查询字符串重定向?,apache,mod-rewrite,Apache,Mod Rewrite,使用Apache的mod rewrite如何重定向foo.php?r=ok到boo.php(也就是说,取决于查询字符串:ifr=ok,然后重定向)。您不能使用查询字符串(字符“”后面的字符串)作为重写变量,因为查询字符串不是URL路径的一部分 您需要将foo.php?r=ok修改为一些字符串路径,如“foo.php/redirect/”来自: 如果你想和 主机名、端口或查询字符串,请使用 用%{HTTP_HOST}重写cond, %{SERVER\u PORT}或%{QUERY\u STRING

使用Apache的mod rewrite如何重定向
foo.php?r=ok
boo.php
(也就是说,取决于查询字符串:if
r
=
ok
,然后重定向)。

您不能使用查询字符串(字符“”后面的字符串)作为重写变量,因为查询字符串不是URL路径的一部分

您需要将foo.php?r=ok修改为一些字符串路径,如“foo.php/redirect/”

来自:

如果你想和 主机名、端口或查询字符串,请使用 用%{HTTP_HOST}重写cond, %{SERVER\u PORT}或%{QUERY\u STRING} 变量

仔细查看重写规则重写条件

编辑:添加了一个工作示例

用来写这些的正则表达式简直就是天堂

无论如何。。。这里有一个简单的规则(Apache2,MacOSX10.5.8)


我测试了很多我能想到的明显的警告(即r=ko,oof.php,foo.php?r=o),但是没有打破它。

我想我可以用r=%6F%66打破它(这是“ok”的)。查询字符串是未解码的字符串。而且没有办法得到解码的那个。
RewriteCond $1 ^(foo\.php)
RewriteCond %{QUERY_STRING} (r=ok) 
RewriteRule (foo\.php)      /bar.php [R]