回答:
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/
それを行ういくつかの拡張機能があります。ただし、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に存在するかどうかを確認するだけなので、さらに開発することができます。
また、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]
また、テストのためにペイメントゲートウェイなどの追加サービスをホワイトリストに登録する必要がある場合があることに注意してください。