我正在配置我的新Apache2.4 Web服务器。
在我的一个VirtualHost中,当我将<If>
条件设置为true时,我将每个人的重定向配置为维护页面,除非自定义请求的标头包含值:
<If "true">
RewriteCond %{HTTP:UserId} !=ab123
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteRule ^ /maintenance.html [R=302]
</If>
是否可以允许检查多个值而不是只有一个?
我想要像:
RewriteCond %{HTTP:UserId} not in (ab123, ze678, gt456)
这是管理员的UserId。
答案 0 :(得分:4)
我认为您不需要包含任何IF
条件。以下应该没问题:
RewriteCond %{HTTP:UserId} !^(ab123|ze678|gt465)$
RewriteCond %{REQUEST_URI} !maintenance.html
RewriteRule ^ /maintenance.html [R=302]
前两个RewriteCond
在逻辑AND
中工作,因此除非两者都为真,否则不会执行该规则。您可以使用OR
d正则表达式检查标题中的用户ID。
如果该字段包含其他值,您可以移除锚^
和$
,但检查不会安全