定时维护模式

Posted

技术标签:

【中文标题】定时维护模式【英文标题】:Timing maintenance mode 【发布时间】:2014-06-12 15:58:55 【问题描述】:

是否可以通过.htaccess方法使维护模式定时?

例如在特定时间禁用维护模式?

例如我用这个(当然是我的 IP):

<IfModule mod_rewrite.c>
RewriteCond %REMOTE_ADDR !^00\.0\.000\.00
RewriteCond %REQUEST_URI !/maintenance.html$ [NC]
RewriteCond %REQUEST_URI !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.html [R=302,L]
</IfModule>

【问题讨论】:

看,谷歌的强大力量,如果你在mod_rewrite time上搜索:httpd.apache.org/docs/trunk/rewrite/… 为什么这个标签是“php”? 【参考方案1】:

是否可以通过.htaccess方法使维护模式定时?

是的,如果维护是固定时间

例如,周日下午 3-4 点(服务器时间)

RewriteCond %TIME_WDAY =6
RewriteCond %TIME_HOUR >15
RewriteCond %TIME_HOUR <16
RewriteRule .* /maintenance.html [R=302,L]

阅读更多关于mod_rewrite time variables的信息。

【讨论】:

【参考方案2】:

是的,这可以通过使用%TIME_HOUR%TIME_MIN 来实现。要在晚上 7 点到 7:15 之间显示维护页面,您可以执行以下操作:

RewriteCond %TIME_HOUR%TIME_MIN >1900
RewriteCond %TIME_HOUR%TIME_MIN <1915
RewriteCond %REMOTE_ADDR !^00\.0\.000\.00
RewriteCond %REQUEST_URI !/maintenance.html$ [NC]
RewriteCond %REQUEST_URI !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.html [R=302,L]

有关可以使用的变量的完整列表,其中一些是基于时间的,请查看documentation。

截至目前,以下变量可用。

TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME

据我所知,没有关于这些变量可以包含什么的文档,但您可以通过执行以下操作来试验它们:

RewriteRule ^foo$ /bar?time_year=%TIME_YEAR [R,L]

然后在浏览器地址栏中输入http://example.com/foo。

【讨论】:

以上是关于定时维护模式的主要内容,如果未能解决你的问题,请参考以下文章

在asp.net核心中实现“维护模式”

WSFC 维护模式操作粒度控制

维护模式与中间件在 Laravel 中重定向

OpenStack Nova 计算节点的维护模式

将网站置于维护模式?

[Symfony 4.3] 创建一个站点维护模式