我对Apache的经验有限,而对RewriteRules的经验则更少。我希望有人可以指出我正确的方向。
每天早上,有一些计划任务在我们的服务器上午5:00到5:30之间执行。在此期间,我们希望将Web请求重新路由到“维护不足”页面。我认为使用htaccess页面很有意义,因为它允许我将请求指向通用页面,而不必保持大量的设置更改。我的问题有两个部分:
鉴于RewriteCond TIME变量表现为“yyyymmddhhnnss”,我假设它看起来像这样:
RewriteCond %{TIME} ^(([0-9]{8})[0][5][0-2][0-9][0-5][0-9])
RewriteRule .* http://mysite.com/under_maintenance.htm
这有意义吗?我感谢您提供的任何和所有帮助。
谢谢!
克雷格
答案 0 :(得分:0)
如果您希望自动执行此操作,则可以专门针对%{TIME_HOUR}
和%{TIME_MIN}
vars进行匹配:
# hour = 05
RewriteCond %{TIME_HOUR} 05
# minute between 00 and 31
RewriteCond %{TIME_MIN} >00 [OR]
RewriteCond %{TIME_MIN} 00
RewriteCond %{TIME_MIN} <31
# can add other exceptions here
# make sure the request isn't FOR the maintenance page
# redirect to maintenance
RewriteRule !^/?under_maintenance.htm$ http://mysite.com/under_maintenance.htm [L,R]
此302(临时)重定向到http://mysite.com/under_maintenance.htm
以获取除维护页面之外的每个请求。所以答案是:
RewriteCond
与时间进行比较,这是一种自动执行此操作的好方法,而无需执行任何额外操作。此规则将阻止访问除维护页面之外的所有内容。您可以通过在RewriteRule
之前添加其他条件来改变这种情况,例如,如果您想允许/special_page.htm
,那么您需要添加:
RewriteCond %{REQUEST_URI} !^/special_page.htm$
如果您想允许所有iamges和css,那么您需要添加:
RewriteCond %{REQUEST_URI} !\.(css|png|jpe?g|gif|ico)$ [NC]