Answers:
这是一种解决方案:
在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/
有少数扩展可以做到这一点。但是,由于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 /”。
并且如果您在负载平衡器后面通过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发送维护页面。通过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]
请注意,也有必要将其他服务(如付款网关)列入白名单以进行测试。