特定IPからのアクセス以外はメンテナンスページに飛ばす

Last-modified: Sun, 18 Dec 2016 17:39:27 JST (306d)
  • サイトメンテナンスなどで、メンテナンスページに飛ばすリダイレクトを仕込むことがありますが、メンテナンスするIPからのアクセスはリダイレクトせず許可したい場合があります。
    mod_rewiteでサクッと条件書けばいいかと思っていましたが、意外に苦戦したのでメモ。
    特に、メンテナンスページに画像が含まれている場合、それも対象外にしないとリダイレクトループが発生します。
    つまり、メンテナンスページを構成するリソースはすべてリダイレクト対象外にする。ということです。(よく忘れます・・)
    ErrorDocument 301 /mentenance.html   #メンテナンスページ
    
    <IfModule mod_rewrite.c>
      RewriteEngine On
      #これが無いと、メンテナンスページに張られた画像が表示されない。最後の[NC]は大文字小文字を区別しないという意味。
      RewriteCond %{REQUEST_URI} !^(.mente_logo.jpg)$ [NC]
      #メンテナンスページはリダイレクト対象から除外。
      RewriteCond %{REQUEST_URI} !=/mentenance.html  
      #特定のIPからのアクセスは許可
      RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.100$
      #301を発生させる
      RewriteRule ^.*$ - [R=301,L]
    </IfModule>

参考にしたサイト

RewriteCond

メンテナンス中画面を出す正しい作法:503を返す

.htaccessで特定のIPアドレス以外からアクセスされたらリライトして表示する


Counter: 175, today: 2, yesterday: 0

このページの参照回数は、175です。