Как закрыть доступ к сайту на время обслуживания

Владимир | | htaccess, Web разработка, WordPress, Разное.

Обслуживание сайта
Практически каждому web мастеру приходится обновлять свои сайты. Установка плагинов, изменение дизайна, обновление движка, все эти операции нужно регулярно выполнять.

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

В этой статье я расскажу, как это сделать для блога на движке WordPress.

Будем считать, что блог находится на shared хостинге и варианты вроде перенаправления посетителя на другой сервер вам недоступны. Управлять web сервером можно только с помощью файла .htaccess.

Кроме того, доступ закрыть нужно не полностью, а только для посетителей. Сами вы должны иметь возможность работать в админке, да и посмотреть на результат тоже нужно.

В принципе, можно ограничить доступ к сайту с помощью пароля. В большинстве случаев для этого вам не придется даже вручную изменять .htaccess. Панели управления (например, cPanel) предоставляют удобный интерфейс для управления доступом.

Но тут есть один недостаток. Форма ввода имени и пароля будет сбивать посетителей с толку.

Поэтому, гораздо лучше показать симпатичную страничку с извинениями и просьбой зайти через некоторое время.

Приступаем.

Прежде всего, создаем файл с названием index.html и примерно таким содержимым.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Сайт на обслуживании</title>
</head>
<body>
<h2>Извините, доступ к сайту временно закрыт</h2>
<h3>Проводятся технические работы</h3>
<h3>Попробуйте зайти через 30 мин</h3>
<h4>С уважением, администрация simplecoding.org</h4>
</body>
<html>

Примечание. Лучше всего если дизайн страницы будет напоминать ваш блог. Тогда посетитель не будет думать, что он ошибся адресом.

Копируем этот файл в корень сайта. Скрипт WordPress, который запускается по-умолчанию, называется index.php, поэтому проблем с именами файлов быть не должно.

Теперь нужно чтобы при обращении к сайту сервер отправил посетителю именно этот файл.

Для этого, находим в корне сайта файл .htaccess, делаем резервную копию .htaccess_old и добавляем в него строку
DirectoryIndex index.html

После этого ищем строку RewriteRule . /index.php и изменяем ее на RewriteRule . /index.html

Теперь при обращении по адресу http://www.mysite.domain будет показана сервисная страница. Кроме того, обращения на любые страницы сайта будут также перенаправлены на index.html.

Обратите внимание, что блог остался доступен, просто теперь нужно явно указать имя скрипта:
http://www.mysite.domain/index.php

Следующий шаг. Переходим в папку /wp-admin и создаем в ней файл .htaccess с одной директивой:
DirectoryIndex index.php

Если этого не сделать директива из .htaccess в корне сайта будет применена ко всем подпапкам, а это сделает нерабочей админку.

Все. Можно приступать к обновлению сайта. Вход в админ панель находится здесь: http://www.mysite.domain/wp-login.php

Точно также можно обратиться к любому скрипту.

Отдельно хочу остановиться на тестировании блога.

Как я уже говорил, главная страница находится по адресу http://www.mysite.domain/index.php. Но ссылки на ней теперь ведут на index.html.

Если вам все-таки нужно посмотреть страницы с постами, то придется определить их id в базе данных. Для этого заходим в раздел «Управление» админ-панели, наводим курсор на ссылку и смотрим адрес ссылки в строке состояния. В конце адреса будет параметр post=число. Используя это число можно попасть на страницу нужной записи.

Для этого вводим в строке адреса:
http://www.mysite.domain/index.php?p=число

Точно также для доступа к категориям используем:
http://www.mysite.domain/index.php?cat=число

После того, как работы будут завершены, восстанавливаем .htaccess из резервной копии. Теперь блог снова будет доступен.

До встречи!

Спонсор статьи:
Блог SEO, SMO, бизнес в интернете
Предлагаем не услуги по продвижению сайтов, а решение задач, стоящих перед бизнесом клиентов.

  • Спасибо за статью.
    Есть, правда, одно замечание. Неплохо бы при перенаправлении на index.html выдавать заголовок с кодом 503, чтобы пауки не решили, что на вашем блоге резко поменялось содержимое.

    Кстати, для целей технических работ на блоге для вордпресса есть плагин «Maintenance Mode».

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

      А насчет заголовка с кодом 503 полностью согласен. Пропустил.

      • И как же err503 поставить? Эх, опять гуглить нужно… сам уже подзабыл 🙁 Блин, срочно сайт закрываю, сломался, ёлки-палки.

        • Читайте здесь.

        • Спасибо за подсказки. Сайт уже перезалил и открыл. Хотел на заметку запись оставить: у меня любая запись, типа RewriteRule . /index.php, выдавала err 500, где ошибка — не знаю. Ну, это уже и не важно 🙂

  • Спасибо за статью.
    Есть, правда, одно замечание. Неплохо бы при перенаправлении на index.html выдавать заголовок с кодом 503, чтобы пауки не решили, что на вашем блоге резко поменялось содержимое.

    Кстати, для целей технических работ на блоге для вордпресса есть плагин «Maintenance Mode».

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

      А насчет заголовка с кодом 503 полностью согласен. Пропустил.

      • И как же err503 поставить? Эх, опять гуглить нужно… сам уже подзабыл 🙁 Блин, срочно сайт закрываю, сломался, ёлки-палки.

        • Читайте здесь.

        • Спасибо за подсказки. Сайт уже перезалил и открыл. Хотел на заметку запись оставить: у меня любая запись, типа RewriteRule . /index.php, выдавала err 500, где ошибка — не знаю. Ну, это уже и не важно 🙂

  • А можно использовать конструкцию
    DirectoryIndex index.html index.php
    и тогда тольок если в папке есть index.html то она его выведет, если же нет — то index.php
    То есть не надо в wp-admin класть свой .htaccess да и вообще его менять после того как удалишь index.html

  • А можно использовать конструкцию
    DirectoryIndex index.html index.php
    и тогда тольок если в папке есть index.html то она его выведет, если же нет — то index.php
    То есть не надо в wp-admin класть свой .htaccess да и вообще его менять после того как удалишь index.html

  • Большое спасибо за статью, все просто и вполне доступно:)
    Олег — если сайт меняется не полностью, а только частитчно, или тем более тока дизайн то никаких заголовков с кодом 503 совсем не надо.

    • Никон, в статье ведь речь шла о полной блокировке доступа к публичной области.

  • Большое спасибо за статью, все просто и вполне доступно:)
    Олег — если сайт меняется не полностью, а только частитчно, или тем более тока дизайн то никаких заголовков с кодом 503 совсем не надо.

    • Никон, в статье ведь речь шла о полной блокировке доступа к публичной области.

  • Спасибо за информацию, теперь хоть буду знать как закрыть доступ на сайт.

  • Спасибо за информацию, теперь хоть буду знать как закрыть доступ на сайт.

  • Вы пишите простые вещи понятным языком. Да еще и выходит на пару листов. Браво! Мне бы так 🙂

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

    • Мне бы так

      Только не надо прибедняться 🙂 Мне тоже ваш блог понравился.

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

  • Вы пишите простые вещи понятным языком. Да еще и выходит на пару листов. Браво! Мне бы так 🙂

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

    • Мне бы так

      Только не надо прибедняться 🙂 Мне тоже ваш блог понравился.

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

  • О,это действительно больная тема,попробую ваши советы,отпишусь!!!

  • О,это действительно больная тема,попробую ваши советы,отпишусь!!!

  • Согласен, что лучше не лить воду понапрасну. Я вот и восхитился Вашим умением «разбавлять» статьи подробностями и просто «междомеееетиями» в очень точной пропорции, чтобы и материал оставался весь полезным и читать было приятно. У меня часто слишком много слов. Я вообще как-то теоретик 🙂

  • Согласен, что лучше не лить воду понапрасну. Я вот и восхитился Вашим умением «разбавлять» статьи подробностями и просто «междомеееетиями» в очень точной пропорции, чтобы и материал оставался весь полезным и читать было приятно. У меня часто слишком много слов. Я вообще как-то теоретик 🙂

  • Pingback: Полезные и бесплатные Open Source движки. Какие виды CMS больше подойдут для создания порталов и сайтов. | Дизайн и бизнес()

  • Спасибо. Только что понадобилось закрыть срочно сайт, в связи с падением плагина по сокрытию платного текста. По вашей инструкции сделал за две минуты.
    Единственное замечание — правильно писать «извИните». Очень распространенная ошибка именно среди тех, кто хочет писать грамотно. 🙂 Исправьте в примере страницы-заглушки.

  • Спасибо. Только что понадобилось закрыть срочно сайт, в связи с падением плагина по сокрытию платного текста. По вашей инструкции сделал за две минуты.
    Единственное замечание — правильно писать «извИните». Очень распространенная ошибка именно среди тех, кто хочет писать грамотно. 🙂 Исправьте в примере страницы-заглушки.

  • Александ

    А не подскажите пожалуйста как закрыть блог на сервере WordPress.com там как я понимаю через ФТП не зайдешь и ацесник не исправишь через панель управления? Спасибо!

    • Если в админке это не предусмотрено, то доступ к блогу вы не закроете. К сожалению, тут всё зависит от администрации сервиса.

  • Александ

    А не подскажите пожалуйста как закрыть блог на сервере WordPress.com там как я понимаю через ФТП не зайдешь и ацесник не исправишь через панель управления? Спасибо!

    • Если в админке это не предусмотрено, то доступ к блогу вы не закроете. К сожалению, тут всё зависит от администрации сервиса.

  • tts

    Толковая статья, автору спасибо)

  • YurOK

    У меня самописная кмс. Выше описаный способ не помог. На быструю написал условие в файле index.php

    if($_SERVER['REMOTE_ADDR']!= 'ххх')
    {
    include('index.html.php');
    exit;
    }
    ххх — мо ip (нужно посомтреть и прописать)
    index.html.php — страница заглушки

  • Pingback: Зарабатывай в интернете честно! » Архив сайта » Как закрыть wordpress? Закрыть на техническое обслуживание.()

  • Papanem

     Спасибо за статью. У меня вот такая проблема. Есть у меня два хоста с доменами . Один домен перанаправил на другого. Хочу без отклуючения редикректа попасть на админку этого домена,и работать там? Вазможно ли это и как ето сделать?

    • Если у вас выделенный сервер, то можно использовать ip адрес сервера, на котором запущен apache, вместо адреса сайта. Но если на одном ip висит несколько сайтов, этот вариант не пройдет.

      Второй вариант — перенастроить редирект так, чтобы он не работал для админки. Например, в случае WP, нужно пропускать адреса, которые содержат wp-admin

  • Дима

    спасибо большое