我正在使用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)
提前谢谢。
答案 0 :(得分:4)
您可以查看%{QUERY_STRING}
中的内容:
RewriteCond %{QUERY_STRING} oldkey=(.*)
RewriteRule .* /ddd?newkey=%1 [R,L]
%1
是来自RewriteCond
的第一个捕获组(称为RewriteCond backreference)。
答案 1 :(得分:0)
如果通过“参数值”表示查询字符串,则可以通过在命令中添加QSA将其附加到重写中,这样就可以[QSA,R,L]