जवाबों:
यहाँ एक समाधान है:
इंडेक्स खोलें। रूट में जोड़ें और (आईपी को सम्मिलित करने के लिए आप जिस साइट को एक्सेस करना चाहते हैं, उसे सम्मिलित करने के लिए 'अनुमत' एरे को संपादित करना याद रखें);
$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.
फिर लाइन बदलें
if (file_exists($maintenanceFile)) {
सेवा
if (file_exists($maintenanceFile) && !in_array($ip, $allowed)) {
सरल। अब आप साइट तक पहुँच सकते हैं (एडमिन + फ्रंट एंड), जबकि अन्य इसका रखरखाव मोड देखते हैं।
स्रोत: http://inchoo.net/ecommerce/magento/mainurance-mode-in-magento/
ऐसे मुट्ठी भर विस्तार हैं जो बस करते हैं। हालाँकि वे अभी भी सिर्फ एक अस्थायी वर्कअराउंड हैं क्योंकि maintenance.flag
कार्यक्षमता अभी भी है। इसे हटाने के लिए आपको मैन्युअल रूप से 'index.php' फ़ाइल को संपादित करना होगा जो बदले में उन्नयन के साथ समस्या पैदा कर सकता है।
if (file_exists($maintenanceFile)) {
include_once dirname(__FILE__) . '/errors/503.php';
exit;
}
इस प्रकार 'index.php' में 'मेन्टेनेंस.फ्लैग' कार्यक्षमता को लागू किया जाता है। हालाँकि जब से आपको 'index.php' को संपादित करने की आवश्यकता होती है, तब आप कुछ और विस्तृत कर सकते हैं, जैसे:
if (file_exists($maintenanceFile) && strpos($_SERVER['REQUEST_URI'], '/admin/') === false) {
include_once dirname(__FILE__) . '/errors/503.php';
exit;
}
कृपया ध्यान दें कि ऊपर दिया गया कोड त्वरित और गंदा हैक है। आप इसे और विकसित कर सकते हैं, जैसा कि मैं अभी जांचता हूं कि क्या url में '/ admin /' मौजूद है।
और यदि आपका एक लोड बैलेंसर जो HTTP_X_FORWARDED_FOR हैडर में क्लाइंट IP पास कर रहा है, तो इस तरह से इसका हिसाब रखना सुनिश्चित करें:
// 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;
}
}
आप अपना स्वयं का रखरखाव पृष्ठ सेट कर सकते हैं और रखरखाव पृष्ठ भेजने के लिए ErrorDocument 503 का उपयोग कर सकते हैं। अपने IP पते को RewriteCond के माध्यम से बाहर निकालें ताकि आप किसी भी तरह से पृष्ठ तक पहुँच सकें और पुनर्निर्देशित न हों:
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]
कृपया ध्यान दें कि परीक्षण के लिए भुगतान गेटवे जैसी अतिरिक्त सेवाओं को श्वेतसूची में करना भी आवश्यक हो सकता है।