2009-06-15 4 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, можете ли вы немного придумать это. Спасибо –

+0

@black sensei см. Пример кода, который я добавил –

2

Я установил Apache, чтобы показать index.html в предпочтении к index.php (который бутстрэпами в ZF). Пока вы не связываетесь напрямую с /index.php нигде, вы можете просто вставить файл index.html, и это покажет, что предпочтительнее ZF-сайта.

Альтернатива иметь запись в конфигурации .ini файла, и как только вы прочитали конфигурацию:

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

Вы можете добавить еще один чек там для конкретного IP-адреса (ваш собственный), так что вы можете получить хотя, даже если все остальные заблокированы.

0

Я бы использовал плагин с dispatchLoopShutdown() и на основе настроек конфигурации я бы перенаправил запрос на любой контроллер, который вы хотите.

0

Я следил за всеми этими предложениями в TEE на Zend 1.12. Я googled вокруг. Пробовал использовать 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 - худший фреймворк. Тонны разных опций о том, как сделать что-то простое, официальная документация крайне неоднозначна и неясна, и никто не понимает и не может объяснить правильный способ сделать что-либо, чтобы в конечном итоге потратить час моего времени на то, чтобы делать что-то правильно.

Смежные вопросы