我想根据一系列条件设置多个规则,如下所示:
仅适用于2016年4月13日凌晨5点之前下午11点。
仅在源IP在范围内
时才适用如果两者都适用,请重新指导2x页面
RewriteCond %{TIME} >20160413050000 [NC]
RewriteCond %{TIME} <20160414230000 [NC]
RewriteCond %{REMOTE_ADDR} ^212\.74\.117\.10[3-9] [OR]
RewriteCond %{REMOTE_ADDR} ^212\.74\.117\.11[0-1] [OR]
RewriteCond %{REMOTE_ADDR} ^89\.197\.6\.236
RewriteRule ^confirm.html$ /confirm-logos.html [R=307,L,QSA]
RewriteRule ^blacklist.html$ /blacklist-logos.html [R=307,L,QSA]
时间规则有效,IP范围有效,但当我有多个这些块时,它们似乎有冲突。以上是正确的,我试图实现什么?
答案 0 :(得分:2)
RewriteCond指令定义规则条件。一个或多个 RewriteCond可以在RewriteRule指令之前。 以下规则是 然后仅在URI的当前状态与其匹配时使用 模式,如果满足这些条件。 http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond
您可以使用:
RewriteCond %{TIME} >20160413050000 [NC]
RewriteCond %{TIME} <20160414230000 [NC]
RewriteCond %{REMOTE_ADDR} ^212\.74\.117\.10[3-9] [OR]
RewriteCond %{REMOTE_ADDR} ^212\.74\.117\.11[0-1] [OR]
RewriteCond %{REMOTE_ADDR} ^89\.197\.6\.236
RewriteRule ^confirm.html$ /confirm-logos.html [R=307,L,QSA]
RewriteCond %{TIME} >20160413050000 [NC]
RewriteCond %{TIME} <20160414230000 [NC]
RewriteCond %{REMOTE_ADDR} ^212\.74\.117\.10[3-9] [OR]
RewriteCond %{REMOTE_ADDR} ^212\.74\.117\.11[0-1] [OR]
RewriteCond %{REMOTE_ADDR} ^89\.197\.6\.236
RewriteRule ^blacklist.html$ /blacklist-logos.html [R=307,L,QSA]
或者,如果您有许多规则,请撤消测试:
RewriteCond %{TIME} <20160413050000 [NC,OR]
RewriteCond %{TIME} >20160414230000 [NC]
RewriteCond %{REMOTE_ADDR} !^212\.74\.117\.10[3-9]
RewriteCond %{REMOTE_ADDR} !^212\.74\.117\.11[0-1]
RewriteCond %{REMOTE_ADDR} !^89\.197\.6\.236
RewriteRule ^ - [L]
RewriteRule ^confirm.html$ /confirm-logos.html [R=307,L,QSA]
RewriteRule ^blacklist.html$ /blacklist-logos.html [R=307,L,QSA]