Apache或httpd中url rewrite规则怎样匹配网址中问号后面的参数?
Apache中的url rewrite功能非常有用,但是现在遇到一个问题,
想知道怎样写httpd的这个rewrite规则能匹配到网址中的get传参的参数呢?
也就是怎样匹配网址里问号后面的参数值呢?
在apache中要匹配网址中问号后面的参数,
需要用到 RewriteCond 配置,
QUERY_STRING变量表示网址中问号后面的get参数字符串。
示例代码如下:
RewriteCond %{QUERY_STRING} ^ad=(.+)$ [NC]
RewriteRule ^.*$ /test_%1 [L,R=301]
上述配置匹配网址中含有参数名 ad,
并在 RewriteRule 中使用参数值,
用百分号 % + 正则结果索引号表示。
上述例子重定向之后的网址中仍然会带上问号后面的所有参数,
如果需要去掉问号后面的参数,
则需要在重写的规则的后面加个问号:
RewriteCond %{QUERY_STRING} ^ad=(.+)$ [NC]
RewriteRule ^.*$ /test_%1? [L,R=301]