Regex mod_rewrite:匹配URL中的字符串,选择哪个正则表达式?
我想使用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 我在测试我的正则表达式,但没有匹配项 我不知道我在这里遗漏了什么,即使我尝试了更简单的正则
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
等。谢谢!什么是(^ |&)
和($|&)
呢?我在答案中添加了这个。