Webサイトのリニューアルやメンテナンス中に、「他のユーザーにはメンテナンス中のメッセージを表示したいけど、自分はメンテナンス中のサイトにアクセス可能にしたい」場合があります。コピペで簡単に実現できるようにブログ記事にしておきます。
ルートフォルダに「503.html」を作る
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>503 Service Temporary Unavailable</title>
</head>
<body>
<h1>503 Service Temporary Unavailable</h1>
<p>メンテナンス中です。</p>
</body>
</html>自分のIPアドレスを調べる
このページにアクセスすると自分のIPを調べることが出来ます。
こちらのサイトでも確認できます。
あなたが現在インターネットに接続しているグローバルIPアドレス確認
同じフォルダの.htaccessの先頭にコピペ
※下記の「192.168.0.2」のところを、上記で調べた自分のIPにします。
ErrorDocument 503 /503.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/503.html
RewriteCond %{REMOTE_ADDR} !=192.168.0.2
RewriteRule ^.*$ - [R=503,L]
</IfModule>アップロード

確認
- アクセスしてみて、サイトにアクセスできるかどうか確認します。
- また、スマホからアクセスするなど、別のIPからアクセスしてみて、503.htmlの内容が表示されているかどうか確認します。

参考情報(https転送も追加したい場合)
.htaccessにHTTPS転送を追加します。
※下記の「192.168.0.2」のところを、上記で調べた自分のIPにします。
ErrorDocument 503 /503.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/503.html
RewriteCond %{REMOTE_ADDR} !=192.168.0.2
RewriteRule ^.*$ - [R=503,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:HTTPS} !on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>以上です。参考になれば幸いです。