Как ограничить доступ к сайту на Мадженто (режим обслуживания)

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

Самым идеальным для этого решением будет ограничение доступа к сайту по IP посетителя. Начиная с версии Мадженто 1.4 стала доступной соответствующая функция, которая позволяет довольно просто перевести сайт в режим технического обслуживания. Для этого достаточно добавить пустой файл maintenance.flag в корень сайта. Система сама делает подобный трюк, когда, например, вы обновляете версию движка из админки. Пока идет обновление, все посетители сайта видят страницу с сообщением о режиме технического обслуживания. После обновления система удаляет этот файл и сайт функционирует в обычном режиме. Единственным недостатком здесь является то, что и вам устанавливается ограничение доступа к сайту. Сегодня мы рассмотрим то, как можно обойти такое ограничение.

 

Чтобы перевести интернет-магазин на Magento в режим технического обслуживания, создайте пустой файл maintenance.flag в корне вашего сайта. После этого при открытии любой страницы сайта вы (и все остальные посетители) будете видеть нечто подобное:

 

Чтобы открыть себе доступ к функционалу сайта, вам нужно будет внести небольшие правки в файл index.php в корневой папке Magento. Нам нужно добавить список разрешенных IP-адресов, для которых будет снято ограничение доступа. Для этого откройте файл index.php и добавьте данный код приблизительно с 50-й строки:

$ip = $_SERVER['REMOTE_ADDR'];
$allowedIp = array('1.1.1.1','2.2.2.2');

 

В массиве $allowedIp = array('1.1.1.1','2.2.2.2'); вам нужно указать список тех IP, с которых доступ будет разрешен.

 

После этого измените строку в этом же файле с

if (file_exists($maintenanceFile)) {

на

if (file_exists($maintenanceFile) && !in_array($ip, $allowedIp)) {

 

После правок часть файла index.php должна выглядеть так:

…
$mageFilename = MAGENTO_ROOT . '/app/Mage.php';
$maintenanceFile = 'maintenance.flag';
$ip = $_SERVER['REMOTE_ADDR'];
$allowedIp = array('1.1.1.1','2.2.2.2');

if (!file_exists($mageFilename)) {
 if (is_dir('downloader')) {
  header("Location: downloader");
 } else {
  echo $mageFilename." was not found";
}
exit;
}

if (file_exists($maintenanceFile) && !in_array($ip, $allowedIp)) {
  include_once dirname(__FILE__) . '/errors/503.php';
  exit;
}
…

 

 

Теперь у вас будет полный доступ к сайту, а все остальные посетители будут видеть страницу с сообщением о проведении технических работ на сайте. Кстати, если вы хотите изменить текст данного сообщения, для этого достаточно будет отредактировать шаблон 503.phtml в папке errors/default.

Надеемся, что сегодняшний урок был вам полезен!

 

View Comments

  • Спасибо за помощь! То, что нужно. Работает отлично.

Recent Posts

Разница между Изображением обложки и Избранным изображением в WordPress

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

1 день ago

15 классических вопросов на собеседовании, к которым следует быть готовым программисту

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

3 дня ago

Артур Шопенгауэр

Изменить я этого не могу, остается извлекать из этого пользу Артур Шопенгауэр  

4 дня ago

Эрнест Хемингуэй

Если вас что-то ранит, значит, вам не все равно Эрнест Хемингуэй  

1 неделя ago

Как создать собственный URL-адрес для входа в WordPress

По умолчанию после каждой установки WordPress есть три основных URL-адреса для входа в админку: {домен}/wp-admin.php,…

2 недели ago

Как отслеживать производительность фрилансера без сложного софта

Производительность – это валюта фрилансера. Когда ты работаешь сам на себя, никто не спросит: "Сколько…

2 недели ago