mod_rewrite忽略特定的查询字符串参数

时间:2013-09-14 11:34:56

标签: regex apache .htaccess mod-rewrite

我在htaccess中有以下内容,并且工作正常

RewriteCond %{REQUEST_URI}  ^/artist\.php$
RewriteCond %{QUERY_STRING} ^bandid=([0-9]*)$ [NC]
RewriteRule ^(.*) /band.php?BandId=%1 [L]

但是一些旧的参考者会发送其他查询字符串:

bandid=1326&order=ASC&orderby=Tdate

apache给他们404

如何告诉mod_rewrite在bandid之后忽略任何其他参数

1 个答案:

答案 0 :(得分:3)

用以下代码替换您的代码:

RewriteCond %{QUERY_STRING} (?:^|&)bandid=([0-9]*)(?:&|$) [NC]
RewriteRule ^artist\.php$ /band.php?BandId=%1 [L,NC]

正则表达式(^|&)bandid=([0-9]*)(&|$)将确保匹配bandid=1326,无论是否存在其他查询参数。