Magento ‘maintenance’ mode IP filter truc

Wanneer je werkzaamheden aan een (live / productie) Magento webshop uit gaat voeren en de ‘deuren van je webshop tijdelijk wil sluiten voor het publiek’ heeft Magento daar een handige feature voor genaamd ‘maintenance mode’ waarbij je middels het plaatsen van een dummy file in je installatie de boel even op slot gooit voor de buitenwereld.

Er is alleen 1 maar… je kunt zelf ook niet meer bij de frontend van je website waardoor het testen van eventuele wijzigingen een lastige is. Er is echter wel een trucje om vooraf ingestelde IP adressen de ‘maintenance mode’ te laten omzeilen en wel toegang te geven tot de webshop.

Hoe? Heel simpel. Open je index.php uit de Magento root en ga op zoek naar de volgende regels code:

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

Nu voegen we daar 2 regels aan toe en wijzigen we de eerste regel van bovenstaande code, eindresultaat ziet er als volgt uit:

$ip = $_SERVER['REMOTE_ADDR'];
$allowed = array('127.0.0.1');

if (file_exists($maintenanceFile) && !in_array($ip, $allowed)) { {
    include_once dirname(__FILE__) . '/errors/503.php';
    exit;
}

Vergeet niet in de $allowed regel de 127.0.0.1 te veranderen naar je IP adres. Upload de index.php naar de root van Magento, plaats een maintenance.flag file in de root directory en als het goed is zouden opgegeven IP adressen nu toegang moeten hebben tot de webshop ondanks dat deze in onderhoudsmodus is gezet.

3 responses to Magento ‘maintenance’ mode IP filter truc

  1. Beste,

    Ik heb de volgende vraag, kan de magenta website niet in maintenance mode zetten met deze code.
    Geeft de volgende fout op regel 91 en de site geeft deze code ook weer.
    Heb de 127.0.0.1 veranderd in mijn eigen ip nummer, hoe los ik dit op?
    Heb nu wel tijdelijk een maintenance.flag bestand op de site gezet.

    Met vriendelijke groet,
    Gert-Jan Jansen

    Beantwoorden
  2. Waarschijnlijk heeft u de code niet juist in de index.php geplakt waardoor de functie niet goed werkt. Stuurt u mij anders via mail de gewijzigde index.php eens toe dan zal ik er even een blik op werpen.

    Beantwoorden
  3. De code bevat een } te weinig, zet die achter de andere } en het script werkt dan naar behoren

    Beantwoorden

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *