サイトメンテナンスする場合

# maintenance
ErrorDocument 503 /maintenance.php
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !=/maintenance.php
  RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx
  RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx
...
  RewriteRule ^.*$ - [R=503,L]
</IfModule>

特定のIPをアクセス不可にする場合

# AccessControl IP/HOST
order allow,deny
allow from all
deny from xxx.xxx.xxx.xxx
deny from xxx.xxx.xxx.xxx
...

サイト転送する場合はサイトメンテナンスで表示する HTML は下記のようにする。
この方法を用いる場合は、200ステータスを返し、301や302といったステータスを与えることができないため、そのステータスがほしい場合は.htaccess でリダイレクトさせたほうがいい(秒数の指定はできないが)。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="format-detection" content="telephone=no, email=no, address=no" />
    <title>○○○</title>
    <meta name="description" content="Webサイトを移転しました。" />
    <meta http-equiv="refresh" content="30;URL=https://example.com" />
    <link rel="canonical" href="https://example.com" />
  </head>
  <body>
    <p>Webサイトを移転しました。<br />30秒後に自動的に転送されますが、転送されない場合、以下のリンクを押してください。</p>
    <p><a href="https://example.com">https://example.com</a></p>
    <script>
      setTimeout(function() {
        location.href = 'https://example.com';
      }, 1000 * (30 + 2));
    </script>
  </body>
</html>