Yanıtlar:
İş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/
Tam da bunu yapan birkaç uzantı var. Ancak maintenance.flag
iş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.
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;
}
}
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.