ウェブサイトをメンテナンスする際、一時的に「メンテナンス画面」を表示させることがあります。今回は、.htaccessを使って、特定のIPアドレス(管理者)以外のユーザーをメンテナンス画面にリダイレクトする方法をご紹介します。
メンテナンス画面用のファイルを用意する
まずは、メンテナンス中であることを訪問者に知らせるページを作成します。ここでは、maintenance.htmlというファイル名で用意したとします。
このファイルには、以下の内容を入れておくのがおすすめです。
- メンテナンス中であることのお知らせ(例:ただいまウェブサイトのメンテナンスを行っております。)
- メンテナンスの期間・予定時間(例:●月●日 ●時〜●時頃まで(予定))
- お問い合わせ先(メールアドレスや電話番号など)
作成したmaintenance.htmlは、サイトのドキュメントルートにアップしてください。
.htaccessの設定
次に、.htaccessに設定を追加します。ここでは、特定のIPアドレス(管理者)以外のユーザーをメンテナンス画面へリダイレクトさせます。
ErrorDocument 503 /maintenance.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteCond %{REMOTE_ADDR} !=192.0.2.123
RewriteCond %{REMOTE_ADDR} !=192.0.3.123
RewriteRule ^.*$ - [R=503,L]
</IfModule>
<IfModule mod_headers.c>
Header set Retry-After "Wed, 21 May 2025 12:00:00 GMT"
</IfModule>
コードの説明
ErrorDocument 503 /maintenance.html
→ 503エラー時にmaintenance.htmlを表示RewriteCond %{REQUEST_URI} !=maintenance.html
→ アクセス先のURLが/maintenance.htmlでない場合はリダイレクトしないRewriteCond %{REMOTE_ADDR} !=192.0.2.123
RewriteCond %{REMOTE_ADDR} !=192.0.3.123
→ 管理者以外のIPアドレスに制限をかける- RewriteRule ^.*$ – [R=503,L]
→ 上記条件に一致した場合、503を返して終了 <IfModule mod_headers.c>
Header set Retry-After "Wed, 21 May 2025 12:00:00 GMT"
</IfModule>
→ HTTPヘッダーにRetry-Afterを追加(検索エンジンなどに再アクセス時期を通知)
以上の方法で、特定のIPアドレス(管理者)以外のユーザーをメンテナンス画面へリダイレクトできます。メンテナンス終了後は、maintenance.htmlと.htaccessの該当設定を削除するのを忘れないようにしましょう