Jak włączyć flagę konserwacji wersji 1.9 z dostępem administratora
14
Ponieważ nie widzę trybu konserwacji w interfejsie użytkownika w wersji 1.9 System > Configuration, upuściłem maintenance.flagplik w katalogu głównym witryny. Jednak to również blokuje dostęp do panelu administracyjnego. Czy ktoś może mi powiedzieć, jak utrzymać tryb konserwacji witryny z dostępem administratora?
Otwórz plik index.php w katalogu głównym i dodaj (pamiętając o edycji tablicy „dozwolonej”, aby zawierała adresy IP, które chcesz mieć dostęp do strony);
$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.
Istnieje kilka rozszerzeń, które właśnie to robią. Jednak nadal są to tylko tymczasowe obejścia, ponieważ maintenance.flagfunkcjonalność nadal istnieje. Aby go usunąć, musisz ręcznie edytować plik „index.php”, co z kolei może powodować problemy z aktualizacjami.
W ten sposób zaimplementowano funkcję „Maintenance.flag” w pliku „index.php”. Ponieważ jednak musisz edytować plik „index.php”, możesz równie dobrze zrobić coś bardziej skomplikowanego, na przykład:
zanim to zrobisz, sprawdź, co to jest request_uri i odpowiednio zmodyfikuj warunek.
Kalyan Chakravarthi V
3
A jeśli jesteś za modułem równoważenia obciążenia, który przekazuje adres IP klienta w nagłówku HTTP_X_FORWARDED_FOR, pamiętaj o uwzględnieniu go w następujący sposób:
// 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;}}
Bardzo przydatne dla osób korzystających z modułu równoważenia obciążenia AWS Ec2
asherrard
1
Możesz skonfigurować własną stronę konserwacji i użyć ErrorDocument 503, aby wysłać stronę konserwacji. Wyklucz swój adres IP za pośrednictwem RewriteCond, aby mimo to uzyskać dostęp do strony i nie zostać przekierowanym:
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]
Należy pamiętać, że może być również konieczne dodanie do białej listy dodatkowych usług, takich jak Payment Gateways, w celu przetestowania.
A jeśli jesteś za modułem równoważenia obciążenia, który przekazuje adres IP klienta w nagłówku HTTP_X_FORWARDED_FOR, pamiętaj o uwzględnieniu go w następujący sposób:
źródło
Możesz skonfigurować własną stronę konserwacji i użyć ErrorDocument 503, aby wysłać stronę konserwacji. Wyklucz swój adres IP za pośrednictwem RewriteCond, aby mimo to uzyskać dostęp do strony i nie zostać przekierowanym:
Należy pamiętać, że może być również konieczne dodanie do białej listy dodatkowych usług, takich jak Payment Gateways, w celu przetestowania.
źródło