답변:
해결책은 다음과 같습니다.
루트에서 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/
그렇게하는 소수의 확장 기능이 있습니다. 그러나 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;
}
위의 코드는 빠르고 더러운 해킹입니다. 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]
테스트를 위해 결제 게이트웨이와 같은 추가 서비스를 허용해야 할 수도 있습니다.