Сайт временно не работает


Немногим ранее мы рассмотрели что такое Maintenance mode, а также способы закрытия сайта на техническое обслуживание.

В том материале я рекомендовал отказаться от использования плагинов для решения данной задачи. Способ закрытия сайта с помощью хука в файле functions.php все же имеет пару недостатков:

  • нет возможности полностью кастомизировать отображаемую страницу-заглушку
  • требует правки кода, в то время как решения в виде плагинов позволяют добиться результата в 1 клик

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

Создание файла maintenance.php

Этап первый. Создание файла, в котором и будет размещен наш собственный контент. Для этого в директории /wp-content создадим файл с названием maintenance.php


. Не забывайте о кодировке файла.

С первым пунктом на этом все.

Верстка страницы

Этап второй. На этом пункте не будем останавливаться подробно. Нам требуется создать HTML-шаблон, который и будет в дальнейшем выводиться. Приведу пример кода.

Листинг HTML:

<!DOCTYPE html> <html> <head> <!-- пропишем заголовок окна --> <title>На сайте ведутся технические работы</title> <!-- не забываем о кодировке --> <meta charset="utf-8" /> <!-- подключаем стили --> <link rel="stylesheet" type="text/css" href="/style.css"> </head> <body> <div class="block"> <div class="template"> <img class="bender" src="link-to-img.jpg"> <h1>На сайте ведутся технические работы</h1> <p>На текущий момент наш интернет-ресурс недоступен. Матрица не сломалась. Мы просто решили сделать ее немного лучше.</p> <p>Обновите страницу через пару минут. Все будет работать.</p> </div> </div> </div> </body> </html> <?php die(); ?>

Листинг CSS:

body{ font-family: Verdana, Arial, sans-serif; font-size: 20px; color : #000; } h1{ font-size: 30px; } p{ font-size: 22px; padding: 0 0 0 10px; margin:0; } .template{ padding: 0 0 10px 50px; text-align: center; } .block{ padding-right: 15px; padding-left: 15px; } .bender{ max-width: 400px; }

Данный код необходимо вставить в вышеупомянутый файл maintenance.php


.

Результат моего HTML-макета выглядит примерно так.

Рекомендую проявить творческую составляющую на данном этапе. Проявили? Тогда идем дальше.

Добавление пункта меню в раздел «Настройки»

// Регистрируем опцию для включения Maintenance mode class custom_general_settings {  function custom_general_settings() {  add_filter( 'admin_init' , array( &$this , 'custom_register_fields' ) );  }  function custom_register_fields() {  register_setting( 'general', 'custom_under_maintenance', 'esc_attr' );  add_settings_field('mk_custom_under_maintenance', '<legend class="custom_under_maintenance"><span>'.__('Режим технического обслуживания' , 'custom_under_maintenance' ).'</legend>' , array(&$this, 'clinto_fields_html') , 'general' );  }  function clinto_fields_html() {  $value = get_option( 'custom_under_maintenance');  $checked = ($value=='yes') ? 'checked="checked"' : '';  echo '<label for="custom_under_maintenance"><input type="hidden" name="custom_under_maintenance" value="no" /><input id="custom_under_maintenance" type="checkbox" '.$checked.' name="custom_under_maintenance" value="yes" />Закрыть сайт</label>';  } } $custom_general_settings = new custom_general_settings(); //

Данный код необходимо добавить в файл functions.php


.

В результате мы получим новую опцию:

Сайт временно не работает

Расположена она в разделе «Настройки», подменю «Общие».

Завершаюший этап

Итак, нам осталось добавить в наш многострадальный functions.php код, который позволит нашему пункту меню включать/выключать режим тех. обслуживания.

//закрытие сайта на тех. обслуживание start $value = get_option( 'custom_under_maintenance');//обработка нашей опции if ($value=='yes' && !current_user_can('manage_options')): add_action( 'wp_loaded', function() {  global $pagenow;  if($pagenow !== 'wp-login.php'  && ! is_user_logged_in()  ) {  header( 'HTTP/1.1 Service Unavailable', true, 503 );  header( 'Content-Type: text/html; charset=utf-8' );  if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {  require_once( WP_CONTENT_DIR . '/maintenance.php' );  }  die();  } }); endif; //закрытие сайта на тех. обслуживание end

Собственно, вот и все. Произвольный HTML-макет написан. В настройки WordPress добавлена соответствующая галочка и ее обработчик. А значит, что все недостатки метода полностью устранены.

При желании вы можете написать обработчик, который позволит не только включать Maintenance mode, но и выбирать один из нескольких шаблонов. Для эстетов напомню, что все приводимые хуки можно оформлять в виде собственных плагинов, за счет чего файл functions.php


останется не только девственно чистым, но и совершенно непорочным.

kuzmenov.ru

Причины создания страницы заглушки

Итак, стоит выделить две причины, по которым каждому уважающему себя ресурсу следует завести себе страницу-заглушку, работающую в перечисленных ситуациях:

  1. Желание не распугать посетителей сайта во время его временного нерабочего состояния. Пользователям не нравится попадать на сайты с «ошибкой», не зная причин и времени простоя, они просто покинут ресурс в поисках более надежного сайта.
  2. Рекламация будущего ресурса, который еще не опубликован. Такие страницы появляются в сети как вестники будущего сайта, с указанием его тематики, краткого обзора и прогноза, ссылками на группы в социальных сетях и контактными данными.

И в первом, и во втором случаях страница заглушка должна иметь приятный, ненавязчивый и привлекательный внешний вид. Привлекательности способствует фон, соответствующий тематике, имеющий уникальное изображение, цвета, используемые компанией, организация шрифтового и графического пространства. Словом, это должна быть полноценная страница-визитка, несущая информационную нагрузку для реципиента.


 

Информация на ней должна быть хорошо организована, лаконична и понятна. Если возможно указать время начала работы сайта, следует это сделать, чтобы посетители знали, когда им вернуться на портал.

 

Нельзя сказать, что страницы-заглушки необходимы только порталам с большим количеством посетителей, таких как игровые ресурсы, файлообменники, платежные и банковские системы. Страница-заглушка не помешает репутации любого, даже начинающего сайта.

babosik.ru

vc.ru

Как это работает?

Работает, как оказалось, все очень просто: при заходе на сайт происходит перенаправление на заранее созданную страницу-заглушку, а для того чтобы зайти Вам на сайт и не попасть на заглушку, необходимо добавить свой IP-адрес в исключения. Это еще один довод в пользу того, что у web-разработчика должен быть свой, выделенный IP-адрес для работы. Если у Вас его нет, то самое подходящее время это исправить.

Рабочий пример

Давайте по пунктам.


  1. Узнаем свой IP-адрес. Допустим у нас 178.74.102.96.
  2. Создаем саму страницу заглушку. У нас, к примеру, это maintenance.html, которая размещена в корне сайта.
  3. В файле .htaccess добавляем вот такой вот код:
    <IfModule mod_rewrite.c>  # заглушка  RewriteCond %{REQUEST_URI} !/maintenance.html$  RewriteCond %{REMOTE_ADDR} !^178.74.102.96  RewriteRule $ /maintenance.html [R=302,L] </IfModule>

Теперь для всех посетителей вашего сайта, которые зайдут на него, будет выводиться страница-заглушка, а для Вас сайт все также будет доступен.

P.S. Лично у меня, на боевом сервере этот код закомментирован и ждет своего часа. Чего и Вам советую.

adminway.ru

Быстрый переход

searchengines.guru

Рубрика: WordPress

Сайт временно не работает

Для того что бы отключить сайт написанный на Wordpress на время работ или разработки сайта, можно воспользоватся специальным плагином или самостоятельно написав код на php.

Простой вариант с плагином:

Есть такой плагин как WordPress Maintenance Mode — он может переводить ваш сайт в режим технического обслуживания. То есть при переходе на сайт или любую вашу страницу у вас постоянно будет появляться страница с надписью «Сайт находится в режиме  технического обслуживания» или «Сайт временно не работает». Также к некоторым страницам можно оставить доступ для пользователей открытым.

Или плагин CGC Maintenance Mode — он также закрывает сайт, но разрешает доступ для определенных IP адресов в настройках.

Свой IP вы можете легко узнать тут _http://2ip.ru/

Также можно выключить сайт, воспользовавшись еще одним способом это установить пароль на сайт или сделать вход только для зарегистрированных пользователей. Для этого можно использовать плагин как Members Only или Registered Users only

Сложный способ без плагина:

Создаем в корне где лежит сайт, файл с именем .maintenance это файл создается wordpress когда идут какие либо обновления движка, после он удаляется.


<?php
function is_user_logged_in() {
$loggedin = false;
foreach ( (array) $_COOKIE as $cookie => $value ) {
if ( stristr($cookie, 'wordpress_logged_in_') )
$loggedin = true;
}
return $loggedin;
}
if ( !stristr($_SERVER['REQUEST_URI'], '/wp-admin/') && !stristr($_SERVER['REQUEST_URI'], '/wp-login.php') && !is_user_logged_in() ) $upgrading = time();
?>

И при входе на сайт вы увидите сообщение «Сайт ненадолго закрыт на техническое обслуживание. Зайдите через минуту.»

Для отключения технического режима сайта, просто удалите файл .maintenance

Также вы можете сами задать любой стиль и текст страницы для этого необходимо создать файл maintenance.php в директории /wp-content/

<?php
wp_load_translations_early();
$protocol = $_SERVER["SERVER_PROTOCOL"];
if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
$protocol = 'HTTP/1.0';
header( "$protocol 503 Service Unavailable", true, 503 );
header( 'Content-Type: text/html; charset=utf-8' );
header( 'Retry-After: 600' );

?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"<?php if ( is_rtl() ) echo ' dir="rtl"'; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Техническое обслуживание</title>

</head>
<body>
<h1>Сайт находится на техническом обслуживании, работа будет восстановлена через несколько минут.</h1>
<h2>Извините за неудобства.</h2>
</body>
</html>

<?php
die();

bortvlad.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.