如何通过mod_rewrite捕获参数值

时间:2011-01-18 11:50:46

标签: apache mod-rewrite

我正在使用Apache2.2.17并尝试重定向URL,如下所示,保留相同的参数值,但键名不同。

/aaa/bbb/ccc?oldkey=value  => /ddd?newkey=value

我正在尝试RewriteRule的一些变体,如下所示但不成功。

RewriteRule /aaa/bbb/ccc?oldkey=(.*) /ddd?newkey=$1 [R,L]

然后我注意到如果我有下面的条件,只保留最后的路径值并且参数键/值丢失。

RewriteRule /aaa/bbb/(.*) /ddd?newkey=$1 [R,L]  ;This produces /ddd?newkey=ccc 

所以我的问题是,

有没有办法通过使用Apache mod_rewrite捕获参数值,我该如何实现? (我也可以使用mod_proxy)

提前谢谢。

2 个答案:

答案 0 :(得分:4)

您可以查看%{QUERY_STRING}中的内容:

RewriteCond %{QUERY_STRING} oldkey=(.*)
RewriteRule .* /ddd?newkey=%1 [R,L]

%1是来自RewriteCond的第一个捕获组(称为RewriteCond backreference)。

答案 1 :(得分:0)

如果通过“参数值”表示查询字符串,则可以通过在命令中添加QSA将其附加到重写中,这样就可以[QSA,R,L]