Htaccess,%{TIME}和%{REMOTE_ADDR}合计

时间:2016-04-11 14:42:14

标签: .htaccess mod-rewrite

我想根据一系列条件设置多个规则,如下所示:

仅适用于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范围有效,但当我有多个这些块时,它们似乎有冲突。以上是正确的,我试图实现什么?

1 个答案:

答案 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]