如何通过管理员权限启用1.9版维护标志


14

因为在1.9版UI 中看不到“ 维护模式”,所以System > Configurationmaintenance.flag在站点根目录中删除了一个文件。但是,这也阻止了我的管理面板访问。有人可以告诉我如何使用管理员权限维护网站维护模式吗?

Answers:


16

这是一种解决方案:

在root中打开index.php并添加(记住编辑“ allowed”数组以包含您希望能够访问该站点的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;
}

这就是在“ index.php”中实现“ maintenance.flag”功能的方式。但是,由于您需要编辑“ index.php”,因此您还可以做一些更复杂的事情,例如:

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

请注意,上面的代码是快速而肮脏的hack。您可以进一步开发它,因为我只是检查url中是否存在“ / admin /”。


在执行此操作之前,只需检查什么是request_uri并相应地修改条件即可。
Kalyan Chakravarthi V

3

并且如果您在负载平衡器后面通过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;
    }
}

对于使用AWS Ec2负载平衡器的用户非常有用
asherrard 2015年

1

您可以设置自己的维护页面,并使用ErrorDocument 503发送维护页面。通过RewriteCond排除您的IP地址,以便您仍然可以访问该页面并且不会被重定向:

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]

请注意,也有必要将其他服务(如付款网关)列入白名单以进行测试。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.