Wie aktiviere ich das Wartungsflag für Version 1.9 mit Administratorzugriff?
14
Da der Wartungsmodus in der Benutzeroberfläche von Version 1.9 nicht angezeigt wird System > Configuration, habe ich eine maintenance.flagDatei im Stammverzeichnis der Site abgelegt . Dies blockiert jedoch auch meinen Admin-Panel-Zugriff. Kann mir jemand sagen, wie man den Site-Wartungsmodus mit Administratorzugriff aufrechterhält ?
Öffnen Sie die Datei index.php im Stammverzeichnis und fügen Sie sie hinzu (denken Sie daran, das Array 'allowed' so zu bearbeiten, dass es die IP-Adressen enthält, über die Sie auf die Site zugreifen möchten).
$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.
Es gibt eine Handvoll Erweiterungen, die genau das tun. Sie sind jedoch nur eine vorübergehende Problemumgehung, da die maintenance.flagFunktionalität noch vorhanden ist. Um es zu entfernen, müssen Sie die Datei 'index.php' manuell bearbeiten, was wiederum Probleme mit Upgrades verursachen kann.
So wird die 'maintenance.flag'-Funktionalität in' index.php 'implementiert. Da Sie jedoch 'index.php' bearbeiten müssen, können Sie auch etwas Aufwändigeres tun, wie zum Beispiel:
Bitte beachten Sie, dass der obige Code ein schneller und schmutziger Hack ist. Sie könnten es weiterentwickeln, da ich nur überprüfe, ob '/ admin /' in der URL existiert.
Bevor Sie dies tun, überprüfen Sie einfach, was das request_uri ist, und ändern Sie die Bedingung entsprechend.
Kalyan Chakravarthi V
3
Und wenn Sie sich hinter einem Load Balancer befinden, der die Client-IP-Adresse im HTTP_X_FORWARDED_FOR-Header übergibt, stellen Sie sicher, dass Sie dies folgendermaßen berücksichtigen:
// 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;}}
Sie können Ihre eigene Wartungsseite einrichten und ErrorDocument 503 zum Senden der Wartungsseite verwenden. Schließen Sie Ihre IP-Adresse über RewriteCond aus, damit Sie trotzdem auf die Seite zugreifen können und nicht weitergeleitet werden:
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]
Bitte beachten Sie, dass es auch erforderlich sein kann, zusätzliche Dienste wie Zahlungs-Gateways zum Testen auf die Whitelist zu setzen.
Und wenn Sie sich hinter einem Load Balancer befinden, der die Client-IP-Adresse im HTTP_X_FORWARDED_FOR-Header übergibt, stellen Sie sicher, dass Sie dies folgendermaßen berücksichtigen:
quelle
Sie können Ihre eigene Wartungsseite einrichten und ErrorDocument 503 zum Senden der Wartungsseite verwenden. Schließen Sie Ihre IP-Adresse über RewriteCond aus, damit Sie trotzdem auf die Seite zugreifen können und nicht weitergeleitet werden:
Bitte beachten Sie, dass es auch erforderlich sein kann, zusätzliche Dienste wie Zahlungs-Gateways zum Testen auf die Whitelist zu setzen.
quelle