2009-06-15 68 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的是最差的框架。關於如何做一些簡單的不同選擇,官方文檔是非常模糊和不明確的,沒有人完全理解或可以解釋正確的方式做任何事情,所以我最終浪費了一小時的時間試圖正確地做事情。