管理者アクセスでバージョン1.9メンテナンスフラグを有効にする方法


14

バージョン1.9 UI にメンテナンスモードが表示されないため、サイトルートにファイルSystem > Configurationをドロップしmaintenance.flagました。ただし、これにより、管理パネルへのアクセスもブロックされます。誰かがどのようにサイトのメンテナンスモードを維持するために私に言うことができる管理者のアクセスを?

回答:


16

1つのソリューションを次に示します。

ルートで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;
}

これが、「maintenance.flag」機能が「index.php」に実装される方法です。ただし、「index.php」を編集する必要があるため、次のようなより複雑な操作を行うこともできます。

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

上記のコードは迅速でダーティなハックであることに注意してください。'/ admin /'がURLに存在するかどうかを確認するだけなので、さらに開発することができます。


これを行う前に、request_uriとは何かを確認し、それに応じて条件を変更します。
カリアンチャクラヴァルティ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.