Regex mod_rewrite:匹配URL中的字符串,选择哪个正则表达式?

Regex mod_rewrite:匹配URL中的字符串,选择哪个正则表达式?,regex,apache,web-services,mod-rewrite,redirect,Regex,Apache,Web Services,Mod Rewrite,Redirect,我想使用mod_rewrite捕获URL中括号内的字符串并进行重定向 我的网址: something?var_a=a&var_b=(b)&var_c=c 带有正则表达式的my.httaccess文件: RewriteEngine on RewriteRule ^/?.+var_b=\((.*)\)$ somedir/$1 [R] 我只想捕获圆括号之间的内容,因此我的重定向应该如下所示:somedir/B 我在测试我的正则表达式,但没有匹配项 我不知道我在这里遗漏了什么,即使我尝试了更简单的正则

我想使用mod_rewrite捕获URL中括号内的字符串并进行重定向

我的网址:

something?var_a=a&var_b=(b)&var_c=c

带有正则表达式的my.httaccess文件:

RewriteEngine on
RewriteRule ^/?.+var_b=\((.*)\)$ somedir/$1 [R]
我只想捕获圆括号之间的内容,因此我的重定向应该如下所示:
somedir/B

我在测试我的正则表达式,但没有匹配项

我不知道我在这里遗漏了什么,即使我尝试了更简单的正则表达式,例如,
+var\u b(.*)$
我也找不到匹配项。只有当我的正则表达式在开始时寻找一个模式时,我才得到一个匹配项,因此例如正则表达式
something(.*)$
可以工作

我错过了什么

RewriteEngine On
RewriteCond %{QUERY_STRING} (^|&)var_b=\((.*?)\)(&|$) [NC]
RewriteRule ^.*$ somedir/%2? [R]
原因是RewriteRule没有收到查询的
?x=y
部分。
%2
变量引用上一个
RewriteCond
中的模式,而
$2
将引用此
RewriteRule
中的模式。末尾的
阻止查询部分
?x=y
自动追加到结果末尾


模式中的
(^ |&)
(&|$)
保证
var|u b=(b)
是完整的参数,而不是它的一部分。如果没有这些,模式也将匹配
?xyzvar_b=(b)
?var_b=(b)xyz
。有了这些,它将只匹配
?var_b=(b)
?a=b&var_b=(b)&x=z
等。

谢谢!什么是
(^ |&)
($|&)
呢?我在答案中添加了这个。