Як увімкнути прапор технічного обслуговування версії 1.9 із доступом адміністратора


14

Оскільки я не бачу режиму обслуговування у користувальницькій версії 1.9 System > Configuration, я скинув maintenance.flagфайл у корінь сайту. Однак це також блокує доступ до моєї панелі адміністратора. Хтось може сказати мені, як підтримувати режим обслуговування сайту з доступом адміністратора?

Відповіді:


16

Ось одне рішення:

Відкрийте index.php у корені та додайте (пам’ятаючи, щоб відредагувати масив 'дозволений', щоб містити IP-адреси, до яких ви хочете отримати доступ до сайту);

$ip = $_SERVER['REMOTE_ADDR'];

$allowed = array('1.1.1.1','2.2.2.2'); // these are the IP's that are allowed to view the site.

потім змінити лінію

if (file_exists($maintenanceFile)) {

до

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

Простий. Тепер ви можете зайти на сайт (адміністратор + передній кінець), а інші бачать його режим обслуговування.

Джерело: http://inchoo.net/ecommerce/magento/mainurance-mode-in-magento/


5

Є кілька розширень, які роблять саме це. Однак вони все ще є лише тимчасовим способом вирішення проблем, оскільки maintenance.flagфункціональність все ще існує. Щоб видалити його, потрібно вручну відредагувати файл 'index.php', що, в свою чергу, може спричинити проблеми з оновленнями.

if (file_exists($maintenanceFile)) {
    include_once dirname(__FILE__) . '/errors/503.php';
    exit;
}

Ось так реалізовується функція 'support.flag' в 'index.php'. Однак оскільки вам потрібно відредагувати 'index.php', ви також можете зробити щось більш складне, наприклад:

if (file_exists($maintenanceFile) && strpos($_SERVER['REQUEST_URI'], '/admin/') === false) {
    include_once dirname(__FILE__) . '/errors/503.php';
    exit;
}

Зверніть увагу, що наведений вище код - це швидке та брудне злом. Ви можете розвинути його далі, тому що я просто перевіряю, чи існує "/ admin /" в URL-адресі.


перед цим просто перевірте, що таке request_uri і відповідно змініть умову.
Кальян Чакраварті V

3

І якщо ви знаходитесь за балансиром навантаження, який передає клієнтський IP-адресу в заголовку HTTP_X_FORWARDED_FOR, переконайтеся, що це враховується так:

// account for load balancer that passes client IP
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
   $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
}
if(empty($ip)) {
    $ip = $_SERVER['REMOTE_ADDR'];
}

// whitelist your ips
$allowed = array();
$allowed[]='WHITELIST.IP.ADDRESS.#1';
$allowed[]='WHITELIST.IP.ADDRESS.#2';

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

Дуже корисний для тих, хто використовує балансир навантаження AWS Ec2
asherrard

1

Ви можете налаштувати власну сторінку обслуговування та використовувати ErrorDocument 503 для надсилання сторінки технічного обслуговування. Виключіть свою IP-адресу через RewriteCond, щоб ви могли будь-ласка отримати доступ до сторінки і не перенаправлятись:

RewriteEngine On
ErrorDocument 503 /errors/503.php
RewriteCond %{REMOTE_ADDR} !^4.3.2.1 [NC] #your IP
RewriteCond %{REMOTE_ADDR} !^4.3.2.2 [NC] #other IP if needed
RewriteCond %{REMOTE_ADDR} !^127.0.0.1 [NC] #localhost maybe needed depending on server setup
RewriteCond %{REQUEST_URI} !^/errors/503.php
RewriteCond %{REQUEST_URI} !^/media/
RewriteCond %{REQUEST_URI} !^/images/
RewriteCond %{REQUEST_URI} !^/css/
RewriteCond %{REQUEST_URI} !^/js/
RewriteCond %{REQUEST_URI} !^/skin/
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} !^/admin #your admin path
RewriteCond %{REQUEST_URI} !^/admin/
RewriteRule ^(.*) http://www.yourwebsite.com/errors/503.php [L,R=503]

Зауважте, що для тестування також може знадобитися список додаткових послуг, таких як Шлюзи платежів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.