2009-06-15 77 views
2

我想弄清楚如何在Zend Framework中为升级数据库或某事设置一个持有/“维护中”页面,并且不希望任何人使用该站点。我想要一个静态HTML页面,并将所有流量重定向到该页面。Zend Framework“正在维护”页面

我宁可不使用.htaccess,并希望通过引导文件来做到这一点。

任何想法?

谢谢。

回答

1

您可以检查maintenance_mode交换机的配置文件,并将引导程序内的每个请求重定向到您的静态html维护页面。

2

我已经通过创建一个插件来检查每次请求页面时请求的有效性。

在执行“preDispatch()”插件的过程中,您可以从配置中分析一个变量,它将当前状态保持为活动/维护状态,并让请求流向原始目标或将其重定向到为此目的的着陆页。

代码示例

public function preDispatch(Zend_Controller_Request_Abstract $request) 
{ 
    // get your user and your config 
    if($config->suspended && $user->role()->name != "admin"){ 
     $request 
      ->setModuleName('default') 
      ->setControllerName('index') 
      ->setActionName('suspended') 
      ->setDispatched(true) 
     ; 
    } 
} 
+0

我对你感兴趣的方法Elzo能否详细介绍一下这个。感谢 – 2011-03-20 09:23:49

+0

@black sensei看到我添加的代码示例 – 2011-03-20 15:43:55

2

我设置Apache以显示在优先的index.php index.html的(这引导了ZF)。只要你不直接链接到任何地方的/index.php,那么你可以放入一个index.html文件,它会显示优先于ZF网站。

另一种方法是在你的配置.ini文件中的条目,并尽快您已经阅读配置:

if ($config->maintenance) { 
    readfile(APPLICATION . '/../public/maintenance.html'); 
    exit; 
} 

你可能想在里面添加其他检查一个特定的IP地址(你自己的),这样即使其他人都被阻止,你也可以得到。

0

我会使用插件dispatchLoopShutdown()和基于配置设置,我会将请求重定向到任何你想要的控制器。

0

我遵循所有这些建议在Zend 1.12上的TEE。我搜索了一下。尝试使用application.ini,使用zend_loader_autoloader_resource(),使用Zend_Loader_PluginLoader设置插件路径。这些都没有为我工作。最后我写的.htaccess:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !^/maintenance\.php$ 
RewriteRule ^(.*)$ /maintenance.php [R=503,L] 

这就是为什么Zend的是最差的框架。关于如何做一些简单的不同选择,官方文档是非常模糊和不明确的,没有人完全理解或可以解释正确的方式做任何事情,所以我最终浪费了一小时的时间试图正确地做事情。