Практически во всех современных cms предусмотрено отключение сайта на техническое обслуживание. Например, для Joomla 2.5 в общих настройках пункт "Сайт выключен (offline)"; для DLE в настройках системы пункт "Выключить сайт". Относительно WordPress ситуация решается установкой плагина Maintenance Mode или WP Maintenance Mode или другого аналога выбор достаточно широк.
Но что делать, если в процессе работ нужно полностью удалять Базу данных или файлы на хостинге, в таком случае стандартный функционал движков теряет эффективность. Или что делать, если используется самописная cms, в которой не предусмотрена функция отключения сайта на обслуживание? Или как отключить сайт на html?
Для всех перечисленных вариантов подойдет метод описанных ниже.
Создание страницы "Ведутся технические работы"
Во-первых нужно создать страницу-заглушку, на которую будет происходить перенаправление. Назовем её offline.php. Содержимое может быть стандартное:
<?php
header ('HTTP/1.0 503 Service Unavailable');
header ('Retry-After: 3600');
?>
<html>
<head>
<title>Ведутся работы</title>
</head>
<body>
<h1>Сайт закрыт на техническое обслуживание.</h1>
<h3>Извините за предоставленные неудобства!</h3>
</body>
</html>
Или можно использовать свою шаблонную страницу используя стили оформления и картинки. В таком случае вверху страницы прописываем только php-код:
<?php
header ('HTTP/1.0 503 Service Unavailable');
header ('Retry-After: 3600');
?>
Функция header ('HTTP/1.0 503 Service Unavailable'); отдаёт серверу ошибку 503, что значит: сайт временно недоступен.
header('Retry-After: 3600'); задаёт время автоматического обновления страницы в миллисекундах. Его можно поставить по максимуму.
Создание .htaccess файла
Во-вторых нужно создать файл .htaccess в корне сайта. Или, если такой файл уже есть, дописать в него следующий код:
RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} !=192.168.0.1 # IP-адрес сайта. Также можно использовать домен.
RewriteCond %{REQUEST_URI} !^/css # исключения из редиректа, в данном случае папка css
RewriteRule ^.* offline.php [L]
Исключения следует использовать если вы применяете шаблон со стилями и картинками, в противном случае файлы .css так же как и картинки будут игнорироваться.
При использовании в .htaccess записи такого вида данные будут подменяться из файла offline.php, а в адресной строке будут отображаться истинные адреса.
Второй вариант:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/offline.php
RewriteCond %{REQUEST_URI} !^/img
RewriteRule ^(.*)$ /offline.php [R=302,L]
При использовании в .htaccess записи такого вида будет происходить 302-й редирект на страницу offline.php, что означает: страница временно находится по новому адресу.
Перед обновлением, нужно залить эти два файла в корень сайта. После обновления файл .htaccess удалить или переименовать, например в .htaccess~ или заменить старым, если такой имелся.
Вот зачем на странице ставить защиту от копирования информации, если ваша статья о программировании и в ней выкладываются куски кода, которые посетители сайта захотят скопировать? Я сначала обрадовался, что на таком замечательном сайте нашёл решение… Но потом так же быстро разочаровался до такой степени, что решил написать это недовольный комментарий
Сори, LDomen, не подумал, что это может мешать. Спасибо, что сообщили об этой проблемке.