Как включить флаг обслуживания версии 1.9 с правами администратора
14
Поскольку я не вижу Режим обслуживания в интерфейсе версии 1.9 System > Configuration, я удалил maintenance.flagфайл в корне сайта. Однако это также блокирует доступ к моей панели администратора. Может кто-нибудь подсказать, как поддерживать режим обслуживания сайта с правами администратора?
Откройте 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.
Есть несколько расширений, которые делают именно это. Однако они все еще являются временными обходными путями, поскольку maintenance.flagфункциональность все еще там. Чтобы удалить его, вы должны вручную отредактировать файл index.php, что, в свою очередь, может вызвать проблемы с обновлениями.
Вот как функциональность 'maintenance.flag' реализована в index.php. Однако, поскольку вам нужно отредактировать файл index.php, вы можете сделать что-то более сложное, например:
Обратите внимание, что приведенный выше код является быстрым и грязным взломом. Вы можете развить это дальше, так как я просто проверяю, существует ли / admin / в URL.
перед этим просто проверьте, что такое request_uri и измените условие соответствующим образом.
Калян Чакраварти V
3
И если вы поддерживаете балансировщик нагрузки, который передает IP-адрес клиента в заголовке HTTP_X_FORWARDED_FOR, убедитесь, что вы учли это следующим образом:
// account for load balancer that passes client IPif(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, чтобы вы могли в любом случае получить доступ к странице и не перенаправляться:
RewriteEngineOnErrorDocument503/errors/503.phpRewriteCond%{REMOTE_ADDR}!^4.3.2.1[NC]#your IPRewriteCond%{REMOTE_ADDR}!^4.3.2.2[NC]#other IP if neededRewriteCond%{REMOTE_ADDR}!^127.0.0.1[NC]#localhost maybe needed depending on server setupRewriteCond%{REQUEST_URI}!^/errors/503.phpRewriteCond%{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 pathRewriteCond%{REQUEST_URI}!^/admin/RewriteRule^(.*) http://www.yourwebsite.com/errors/503.php [L,R=503]
Обратите внимание, что для тестирования может также потребоваться внести в белый список дополнительные услуги, такие как Платежные шлюзы.
И если вы поддерживаете балансировщик нагрузки, который передает IP-адрес клиента в заголовке HTTP_X_FORWARDED_FOR, убедитесь, что вы учли это следующим образом:
источник
Вы можете настроить свою собственную страницу обслуживания и использовать ErrorDocument 503 для отправки страницы обслуживания. Исключите ваш IP-адрес через RewriteCond, чтобы вы могли в любом случае получить доступ к странице и не перенаправляться:
Обратите внимание, что для тестирования может также потребоваться внести в белый список дополнительные услуги, такие как Платежные шлюзы.
источник