私が直面する一般的な問題は、新しい展開が実行されている間、またはその他のメンテナンス (新しい展開のテストなど) が行われている間、Web サイトに保留ページを配置することです。Apache (htaccess) を使用している場合、これは簡単に実行できることはわかっていますが、これは常に使用中の Web サーバー (IIS、Nginx など) とは限りません。私の現在のすべての Web サイトはすべてのリクエストを public ディレクトリ (Zend Framework、Wordpress、Symfony2 など) のルートにある index.php ファイルにリダイレクトするため、現在の解決策は次のとおりです。
index.php
次のコードをルートファイルに追加するには:
$maintenanceFile = 'maintenance.flag';
if (file_exists($maintenanceFile)) {
$ips = explode("\n",file_get_contents($maintenanceFile));
foreach($ips as $key=>$value) {
$ips[$key] = trim($value);
}
if(!isset($_COOKIE['BYPASS_MAINTENANCE']) && !in_array($_SERVER['REMOTE_ADDR'], $ips)) {
include_once dirname(__FILE__) . '/holding.html';
exit;
}
}
maintenance.flag
これにより、次のように、許可された IP アドレスのリストを含むファイルをルートにも簡単に追加できます。
127.0.0.1
123.456.789.101
次に、IP アドレスがリスト内に存在する場合、現在の Web サイトを表示して、再度公開する前にテストすることができます。そうでない場合は、holding.html
代わりにページ (これもルートに存在します) が表示されます。終了したら、maintenance.flag
ファイルを削除するだけです。
だから私の質問は、これを行うより良い方法はありますか?