【问题标题】:How do big sites do a maintenance notice page?大网站如何做维护通知页面?
【发布时间】:2012-05-24 05:54:12
【问题描述】:

我即将升级我的整个网站。我正在寻找有关科技初创公司如何进行维护过程的建议。

我正在考虑使用 htaccess。但是,这只会将访问例如 index.php 的用户重定向到 maintenance.php 对吗?如果用户访问dashboard.php,则不会重定向。

在维护期间,我确实需要访问 index.php(仅限我)。在科技初创公司工作的任何人都愿意分享他们的解决方案吗?非常感谢。

【问题讨论】:

  • htaccess 可以将所有请求重定向到maintenance.php
  • 我打算给出解决方案,但我不适合创业。
  • @Slay 您应该编辑您的问题,询问如何使用 PHP/.htaccess 将站点置于维护模式,同时仍为员工保留访问权限。只关注技术方面,忽略关于初创公司等的问题。
  • 有很多方法可以做到这一点,这完全取决于您的特定需求和架构。例如,您需要在维护窗口期间访问整个站点还是只访问其中的一部分?您是否为此关闭了整个站点或部分站点?你使用负载均衡器吗?

标签: php maintenance maintenance-mode


【解决方案1】:

我们使用 LightTPD 作为网络服务器,我使用“mod_magnet”来做这些事情。 Mod_magnet 允许我使用简单的 lua 脚本进行请求处理。我们有一个自动任务,它将在 Web 服务器的文件系统的某处创建一个空文件。 lua 脚本将在每次请求时检查该文件是否存在,如果找到该文件,则返回静态维护页面。脚本的重要部分如下所示:

--
-- maintenance page
--
local config = {
    ['maintenance'] = {
        ['allow'] = {
            '127.0.0.1'    -- just an example IP address
        }
    }
}

if lighty.stat(lighty.env['physical.doc-root'] .. 'maintenance') then
    tmp, _ = table.search(config.maintenance.allow, lighty.env['request.remote-ip'])
    if not tmp then
        -- maintenance modus
        lighty.content = {
            { filename = lighty.env['physical.doc-root'] .. 'error/maintenance.html' }
        }

        return 503
    end
end

在脚本中还有一个配置仍然允许特定的 IP 地址通过,因此您仍然可以从您的公司网络中查看网站,例如,当其他人只获得维护页面时。

此解决方案运行良好,并且由于自动化,如果您需要一个或多个网络服务器上的维护页面并不重要。

如果您有兴趣,可以在此处找到有关“mod_magnet”的更多信息:

http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModMagnet

【讨论】:

    【解决方案2】:

    既然您提到了 .htaccess,我假设您使用 Apache 作为您的 Web 服务器。正如其他人所提到的,您可以使用 .htaccess 或者您可以编辑该特定站点的 VirtualHost conf。

    无论哪种方式,我都建议按照 Jonathon Sampson 的建议使用 mod_rewrite,但是,您要非常小心,以确保发送正确的状态代码,因为 GoogleBot 等重要机器人希望看到 503,它告诉他们您目前正在维护中。

    this AskApache article 中有一些非常明确的说明可以让您完全按照自己的意愿行事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多