Làm cách nào để bật cờ bảo trì phiên bản 1.9 với quyền truy cập của quản trị viên


14

Vì tôi không thấy Chế độ bảo trì trong giao diện người dùng phiên bản 1.9 System > Configuration, tôi đã bỏ một maintenance.flagtệp trong thư mục gốc. Tuy nhiên, điều đó cũng chặn truy cập bảng quản trị của tôi. Ai đó có thể cho tôi biết làm thế nào để duy trì chế độ bảo trì trang web với quyền truy cập quản trị viên?

Câu trả lời:


16

Đây là một giải pháp:

Mở index.php trong root và thêm (nhớ chỉnh sửa mảng 'được phép' để chứa IP mà bạn muốn có thể truy cập trang web);

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

sau đó thay đổi dòng

if (file_exists($maintenanceFile)) {

đến

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

Đơn giản. Bây giờ bạn có thể truy cập trang web (admin + front end), trong khi những người khác thấy chế độ bảo trì của nó.

Nguồn: http://inchoo.net/ecommerce/magento/maintenance-mode-in-magento/


5

Có rất nhiều tiện ích mở rộng làm được điều đó. Tuy nhiên, chúng vẫn chỉ là một cách giải quyết tạm thời vì maintenance.flagchức năng vẫn còn đó. Để xóa nó, bạn phải chỉnh sửa thủ công tệp 'index.php', điều này có thể gây ra sự cố với việc nâng cấp.

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

Đây là cách chức năng 'bảo trì.flag' được thực hiện trong 'index.php'. Tuy nhiên, vì bạn cần chỉnh sửa 'index.php', bạn cũng có thể làm một cái gì đó chi tiết hơn, chẳng hạn như:

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

Xin lưu ý các mã trên là hack nhanh và bẩn. Bạn có thể phát triển nó hơn nữa, vì tôi chỉ kiểm tra xem '/ admin /' có tồn tại trong url không.


trước khi làm điều này chỉ cần kiểm tra request_uri là gì và sửa đổi điều kiện cho phù hợp.
Kalyan Chakravarthi V

3

Và nếu phía sau bộ cân bằng tải của bạn truyền IP khách trong tiêu đề HTTP_X_FORWARDED_FOR, hãy đảm bảo tính toán cho nó như sau:

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

Rất hữu ích cho những người sử dụng bộ cân bằng tải AWS Ec2
asherrard

1

Bạn có thể thiết lập trang bảo trì của riêng mình và sử dụng ErrorDocument 503 để gửi trang bảo trì. Loại trừ địa chỉ IP của bạn thông qua RewriteCond để bạn có thể truy cập trang bằng mọi cách và không bị chuyển hướng:

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]

Xin lưu ý rằng cũng có thể cần phải đưa vào danh sách trắng các dịch vụ bổ sung như Cổng thanh toán để thử nghiệm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.