관리자 액세스로 버전 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;
}

이것이 '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 /'이 있는지 확인하면 더 발전시킬 수 있습니다.


이를 수행하기 전에 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

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]

테스트를 위해 결제 게이트웨이와 같은 추가 서비스를 허용해야 할 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.