如何将.htaccess中多条URL参数404重写规则合并为单条?
合并.htaccess中多条查询字符串匹配的Rewrite规则
当然可以把这些规则合并成单条,你之前并列RewriteCond没生效的原因是:默认情况下多个RewriteCond是AND逻辑,也就是所有条件必须同时满足才会触发后续规则——显然一个查询字符串不可能同时以age和gender开头,所以只有第一条规则能命中。
正确的做法是用正则的“或”操作符|,把所有需要匹配的前缀合并到同一个RewriteCond里,实现OR逻辑匹配。
合并后的完整规则如下:
RewriteCond %{QUERY_STRING} ^(&|age|gender|languages|sites|sortOrder|status|tags) RewriteRule ^$ - [R=404]
规则说明:
^:锚定查询字符串的起始位置,确保是以指定前缀开头,而非包含这些字符串(&|age|gender|languages|sites|sortOrder|status|tags):用|分隔所有目标前缀,只要查询字符串以其中任意一项开头,就会触发条件RewriteRule ^$ - [R=404]:和你原规则逻辑一致,匹配根目录请求并返回404状态码
这个写法完全等价于你原来的8条规则,且更简洁易维护。
内容的提问来源于stack exchange,提问作者Diezel Sali
相关产品推荐
相关产品推荐

