1

我需要使用 Apache mod_rewrite 替换 QueryString 的值。许多值必须被一个新值替换({oldValueA1, oldValueA2} => newValueA; {oldValueB1, oldValueB2} => newValueB)。该参数在 query_string 中出现的次数不定。参数值的顺序是随机的。如果重定向的 query_string 包含两次值,对我来说没关系。request_uri 是可变的,但在重定向期间不应更改。

这里有些例子。第一行包含原始网址,第二行包含新网址。

localhost/mag/cat/?myParameter=oldValueA1&myParameter=oldValueB1
localhost/mag/cat/?myParameter=newValueA&myParameter=newValueB

localhost/mag/?myParameter=oldValueA2
localhost/mag/?myParameter=newValueA

localhost/dig/cat/?myParameter=oldValueB1&myParameter=oldValueA2
localhost/dig/cat/?myParameter=newValueB&myParameter=newValueA

localhost/dig/?myParameter=oldValueB2&oldValueB3
localhost/dig/?myParameter=newValueB&newValueB

我尝试了几个带有某些条件的 RewriteRules,但我找不到解决这个问题的方法。有人有想法吗?

谢谢!:)

4

1 回答 1

2

我找到了解决我的问题的方法。也许它也会对其他人有所帮助。这里是:

RewriteCond %{QUERY_STRING} ^(.*[&?]|)myParameter=(oldValueA1|oldValueA2)([&?].*|)$
RewriteRule ^(.*)$ $1?%1myParameter=newValueA [R=301,NC,L]
RewriteCond %{QUERY_STRING} ^(.*[&?]|)myParameter=(oldValueB1|oldValueB2)([&?].*|)$
RewriteRule ^(.*)$ $1?%1myParameter=newValueB [R=301,NC,L]
于 2013-11-11T21:44:14.100 回答