应用场景:
在RewriteRule中,如果规则中没有重写GET参数,原有的GET参数是可以直接传递的;但如果在重写时定义了其他的GET参数,则原有的GET参数就都没了:
RewriteRule ^([0-9a-zA-Z]+) /index.php?alias=$1
上面的代码会将url重写到index.php下,这时如果在用户名后有GET参数,如&id=$id,那么在index.php中只能得到$_GET['alias'],而无法获取到$_GET['id']
解决方案:
若需要传递原有的GET参数,不必用正则去写RewriteRule,直接使用%{QUERY_STRING}就可以获取原有的所有参数:
RewriteRule ^([0-9a-zA-Z]+) /index.php?alias=$1&%{QUERY_STRING}
<VirtualHost *:8080>
ServerName www.hufu.com
DocumentRoot "D:/www/hufu/"
RewriteEngine on
RewriteRule ^/([a-z]+)/([a-z]+).html$ /?m=$1&c=$2&%{QUERY_STRING} [PT]
</VirtualHost>