我正在尝试生成涉及一些特定任务的外部重定向。
示例:我有网址http://foobar.com/?a=123&b=456&c=blah
首先,如果参数c = blah
,则重定向到http://barfoo.com/
其次,将a
替换为x
参数,以便最终的网址为http://barfoo.com/?x=123&b=456&c=blah
以下是我在研究http://mod-rewrite-cheatsheet.com/和Hidden features of mod_rewrite
后的最佳猜测RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.foobar\.com$ [NC]
RewriteCond %{QUERY_STRING} ^a=(.*)&b=(.*)&c=blah$ [NC]
RewriteRule ^(.*)$ http://barfoo.com/?x=%1&b=%2&c=blah [NC,L,QSA,R=301]
但是,URL会附加查询字符串,而不是替换。
我被重定向到http://barfoo.com/?x=123&b=456&c=blah&a=123&b=456&c=blah
答案 0 :(得分:0)
打了额头
从标记中删除QSA
解决了这个问题。 QSA
表示"将现有查询字符串附加到当前重写规则。"它会忽略您要添加的任何新查询字符串参数。
我认为需要为重写规则本身提供查询字符串参数。
RewriteRule ^(.*)$ http://barfoo.com/?x=%1&b=%2&c=blah [NC,L,R=301]