ฉันจะเปิดใช้งานการตั้งค่าสถานะการบำรุงรักษารุ่น 1.9 ด้วยการเข้าถึงของผู้ดูแลระบบได้อย่างไร


14

เนื่องจากฉันไม่เห็นโหมดการบำรุงรักษาในเวอร์ชัน 1.9 UI System > Configurationฉันจึงปล่อยmaintenance.flagไฟล์ในรูทไซต์ อย่างไรก็ตามยังบล็อกการเข้าถึงแผงควบคุมของฉันด้วย บางคนสามารถบอกวิธีรักษาโหมดบำรุงรักษาไซต์ด้วยการเข้าถึงของผู้ดูแลระบบได้หรือไม่

คำตอบ:


16

นี่คือทางออกหนึ่ง:

เปิด index.php ในรูทแล้วเพิ่ม (จำเพื่อแก้ไขอาร์เรย์ 'ที่อนุญาต' เพื่อให้มี IP ที่คุณต้องการเข้าถึงเว็บไซต์);

$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/maintenance-mode-in-magento/


5

มีส่วนขยายไม่กี่อย่างที่ทำเช่นนั้น อย่างไรก็ตามพวกเขายังคงเป็นเพียงการแก้ปัญหาชั่วคราวเนื่องจากการmaintenance.flagทำงานยังคงอยู่ที่นั่น ในการลบคุณต้องแก้ไขไฟล์ 'index.php' ด้วยตนเองซึ่งอาจทำให้เกิดปัญหากับการอัปเกรด

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

นี่คือวิธีการใช้งาน 'maintenance.flag' ใน 'index.php' อย่างไรก็ตามเนื่องจากคุณต้องแก้ไข 'index.php' คุณสามารถทำบางสิ่งที่ซับซ้อนกว่าเช่น:

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

โปรดทราบว่ารหัสข้างต้นนั้นเป็นแฮ็คที่รวดเร็วและสกปรก คุณสามารถพัฒนามันต่อไปได้เพราะฉันแค่ตรวจสอบว่า '/ admin /' มีอยู่ใน url หรือไม่


ก่อนทำสิ่งนี้ให้ตรวจสอบว่า request_uri คืออะไรและแก้ไขเงื่อนไขให้ถูกต้อง
Kalyan Chakravarthi V

3

และถ้าคุณอยู่ด้านหลังตัวโหลดบาลานซ์ที่ส่ง IP ไคลเอ็นต์ในส่วนหัว HTTP_X_FORWARDED_FOR ให้ตรวจดูให้แน่ใจว่าบัญชีนี้เป็นแบบนี้:

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

1

คุณสามารถตั้งค่าหน้าการบำรุงรักษาของคุณเองและใช้ 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]

โปรดทราบว่าอาจจำเป็นต้องอนุญาตบริการเพิ่มเติมอื่น ๆ เช่นเกตเวย์การชำระเงินเพื่อทดสอบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.