Come abilito il flag di manutenzione versione 1.9 con accesso amministratore


14

Poiché non vedo la modalità di manutenzione nell'interfaccia utente della versione 1.9 System > Configuration, ho eliminato un maintenance.flagfile nella radice del sito. Tuttavia, ciò blocca anche l'accesso al mio pannello di amministrazione. Qualcuno può dirmi come mantenere la modalità di manutenzione del sito con accesso di amministratore?

Risposte:


16

Ecco una soluzione:

Apri index.php in root e aggiungi (ricordando di modificare l'array 'consentito' per contenere gli IP di cui vuoi essere in grado di accedere al sito);

$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.

quindi cambia la linea

if (file_exists($maintenanceFile)) {

per

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

Semplice. Ora puoi accedere al sito (admin + front-end), mentre altri vedono la sua modalità di manutenzione.

Fonte: http://inchoo.net/ecommerce/magento/maintenance-mode-in-magento/


5

C'è una manciata di estensioni che fanno proprio questo. Tuttavia, sono ancora solo soluzioni temporanee poiché la maintenance.flagfunzionalità è ancora presente. Per rimuoverlo è necessario modificare manualmente il file 'index.php' che a sua volta può causare problemi con gli aggiornamenti.

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

Ecco come viene implementata la funzionalità 'maintenance.flag' in 'index.php'. Tuttavia, poiché è necessario modificare "index.php", si potrebbe anche fare qualcosa di più elaborato, come ad esempio:

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

Si prega di notare che il codice sopra è hack rapido e sporco. Potresti svilupparlo ulteriormente, poiché controllo solo se '/ admin /' esiste in url.


prima di fare ciò basta controllare qual è il request_uri e modificare la condizione di conseguenza.
Kalyan Chakravarthi V

3

E se sei dietro un bilanciamento del carico che sta passando l'IP client nell'intestazione HTTP_X_FORWARDED_FOR assicurati di tenerne conto in questo modo:

// 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;
    }
}

Molto utile per coloro che utilizzano un bilanciamento del carico AWS Ec2
asherrard il

1

È possibile impostare la propria pagina di manutenzione e utilizzare ErrorDocument 503 per inviare la pagina di manutenzione. Escludi il tuo indirizzo IP tramite RewriteCond in modo da poter accedere comunque alla pagina e non essere reindirizzato:

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]

Si noti che può anche essere necessario autorizzare servizi aggiuntivi come i gateway di pagamento per i test.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.