使用Apache';s mod rewrite如何根据查询字符串重定向?
使用Apache的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
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}
变量
仔细查看重写规则和重写条件
编辑:添加了一个工作示例
用来写这些的正则表达式简直就是天堂
无论如何。。。这里有一个简单的规则(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]