我想弄清楚如何在Zend Framework中爲升級數據庫或某事設置一個持有/「維護中」頁面,並且不希望任何人使用該站點。我想要一個靜態HTML頁面,並將所有流量重定向到該頁面。Zend Framework「正在維護」頁面
我寧可不使用.htaccess,並希望通過引導文件來做到這一點。
任何想法?
謝謝。
我想弄清楚如何在Zend Framework中爲升級數據庫或某事設置一個持有/「維護中」頁面,並且不希望任何人使用該站點。我想要一個靜態HTML頁面,並將所有流量重定向到該頁面。Zend Framework「正在維護」頁面
我寧可不使用.htaccess,並希望通過引導文件來做到這一點。
任何想法?
謝謝。
您可以檢查maintenance_mode
交換機的配置文件,並將引導程序內的每個請求重定向到您的靜態html維護頁面。
我已經通過創建一個插件來檢查每次請求頁面時請求的有效性。
在執行「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)
;
}
}
我設置Apache以顯示在優先的index.php index.html的(這引導了ZF)。只要你不直接鏈接到任何地方的/index.php,那麼你可以放入一個index.html文件,它會顯示優先於ZF網站。
另一種方法是在你的配置.ini文件中的條目,並儘快您已經閱讀配置:
if ($config->maintenance) {
readfile(APPLICATION . '/../public/maintenance.html');
exit;
}
你可能想在裏面添加其他檢查一個特定的IP地址(你自己的),這樣即使其他人都被阻止,你也可以得到。
我會使用插件dispatchLoopShutdown()
和基於配置設置,我會將請求重定向到任何你想要的控制器。
我有一篇博客文章演示瞭如何做到這一點。 Setting up a maintenance page with Zend Framework
我遵循所有這些建議在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的是最差的框架。關於如何做一些簡單的不同選擇,官方文檔是非常模糊和不明確的,沒有人完全理解或可以解釋正確的方式做任何事情,所以我最終浪費了一小時的時間試圖正確地做事情。
我對你感興趣的方法Elzo能否詳細介紹一下這個。感謝 – 2011-03-20 09:23:49
@black sensei看到我添加的代碼示例 – 2011-03-20 15:43:55