Yönetici erişimi ile sürüm 1.9 bakım bayrağını nasıl etkinleştiririm


14

1.9 UI sürümünde Bakım Modu'nu görmediğim için site köküne System > Configurationbir maintenance.flagdosya bıraktım . Ancak bu, yönetici paneli erişimimi de engeller. Birisi bana yönetici erişimi ile site bakım modunu nasıl koruyacağımı söyleyebilir mi?

Yanıtlar:


16

İşte bir çözüm:

Root'ta index.php dosyasını açın ve ekleyin ('izin verilen' diziyi siteye erişmek istediğiniz IP'leri içerecek şekilde düzenlemeyi unutmayın);

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

sonra çizgiyi değiştir

if (file_exists($maintenanceFile)) {

için

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

Basit. Artık siteye erişebilirsiniz (admin + ön uç), diğerleri bakım modunu görür.

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


5

Tam da bunu yapan birkaç uzantı var. Ancak maintenance.flagişlevsellik hala mevcut olduğundan, bunlar hala geçici bir çözümdür . Kaldırmak için 'index.php' dosyasını el ile düzenlemeniz gerekir, bu da yükseltme ile ilgili sorunlara neden olabilir.

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

'İndex.php' içinde 'maintenance.flag' işlevi bu şekilde uygulanır. Bununla birlikte, 'index.php' dosyasını düzenlemeniz gerektiğinden, daha ayrıntılı bir şey de yapabilirsiniz, örneğin:

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

Yukarıdaki kodun hızlı ve kirli bir saldırı olduğunu lütfen unutmayın. URL'de '/ admin /' olup olmadığını kontrol ettiğim için daha da geliştirebilirsiniz.


Bunu yapmadan önce sadece request_uri'nin ne olduğunu kontrol edin ve durumu buna göre değiştirin.
Kalyan Chakravarthi V

3

Ve HTTP_X_FORWARDED_FOR üstbilgisinde istemci IP'sini geçen bir yük dengeleyicinizin arkasında bunu şöyle hesapladığınızdan emin olun:

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

AWS Ec2 yük dengeleyici kullananlar için son derece yararlı
asherrard 30:15

1

Kendi bakım sayfanızı oluşturabilir ve bakım sayfasını göndermek için ErrorDocument 503'ü kullanabilirsiniz. Sayfaya yine de erişebilmeniz ve yönlendirilmemeniz için IP adresinizi RewriteCond üzerinden hariç tutun:

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]

Test için Ödeme Ağ Geçitleri gibi ek hizmetlerin beyaz listeye alınmasının da gerekli olabileceğini lütfen unutmayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.