Comment activer l'indicateur de maintenance de la version 1.9 avec un accès administrateur
14
Parce que je ne vois pas le mode de maintenance dans l'interface utilisateur de la version 1.9 System > Configuration, j'ai déposé un maintenance.flagfichier à la racine du site. Cependant, cela bloque également l'accès à mon panneau d'administration. Quelqu'un peut-il me dire comment maintenir le mode de maintenance du site avec un accès administrateur?
Ouvrez index.php à la racine et ajoutez (en vous souvenant de modifier le tableau «autorisé» pour contenir les IP que vous souhaitez pouvoir accéder au site);
$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.
Il y a une poignée d'extensions qui font exactement cela. Cependant, ils ne sont qu'une solution de contournement temporaire car la maintenance.flagfonctionnalité est toujours là. Pour le supprimer, vous devez éditer manuellement le fichier 'index.php' qui, à son tour, peut entraîner des problèmes avec les mises à niveau.
C'est ainsi que la fonctionnalité 'maintenance.flag' est implémentée dans 'index.php'. Cependant, puisque vous devez éditer 'index.php', vous pourriez aussi bien faire quelque chose de plus élaboré, comme:
Veuillez noter que le code ci-dessus est un hack rapide et sale. Vous pouvez le développer davantage, car je vérifie simplement si '/ admin /' existe dans l'url.
avant de faire cela, vérifiez simplement quel est le request_uri et modifiez la condition en conséquence.
Kalyan Chakravarthi V
3
Et si vous êtes derrière un équilibreur de charge qui transmet l'adresse IP du client dans l'en-tête HTTP_X_FORWARDED_FOR, assurez-vous d'en tenir compte comme ceci:
// 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;}}
Très utile pour ceux qui utilisent un équilibreur de charge AWS Ec2
asherrard
1
Vous pouvez configurer votre propre page de maintenance et utiliser ErrorDocument 503 pour envoyer la page de maintenance. Excluez votre adresse IP via RewriteCond afin que vous puissiez accéder à la page de toute façon et ne pas être redirigé:
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]
Veuillez noter qu'il peut également être nécessaire de mettre en liste blanche des services supplémentaires tels que les passerelles de paiement pour les tests.
Et si vous êtes derrière un équilibreur de charge qui transmet l'adresse IP du client dans l'en-tête HTTP_X_FORWARDED_FOR, assurez-vous d'en tenir compte comme ceci:
la source
Vous pouvez configurer votre propre page de maintenance et utiliser ErrorDocument 503 pour envoyer la page de maintenance. Excluez votre adresse IP via RewriteCond afin que vous puissiez accéder à la page de toute façon et ne pas être redirigé:
Veuillez noter qu'il peut également être nécessaire de mettre en liste blanche des services supplémentaires tels que les passerelles de paiement pour les tests.
la source