mod_rewriteで指定時間や特定IPからのアクセスを条件にリダイレクトさせる方法(.htaccess)

WEBサイトのメンテナンスやキャンペーンなどを行う際、指定した時間・時間帯を条件にリダイレクトさせる必要がある場合があります。

今回は、mod_rewriteの機能で時間指定やIPアドレスを条件にしたリダイレクト処理を .htaccessファイル に記述する方法(例)を書いていきます。

指定時間になるまではキャンペーンページを表示させない

指定時間前にキャンペーンページを見られたくはないが、予めサーバーにファイルを置いて準備しておきたい場合などに利用します。

# "2021/01/26 16:00:00" になるまでは
# "/campaign/" ページ以下へのアクセスを ホーム "/" へリダイレクトする
RewriteCond %{TIME} <20210126155959
RewriteRule ^campaign/(.*) / [R=302,L]

上記のサンプルでは2021年1月26日の16時になる前に /campain/ ページ以下のURLにアクセスした場合は、ホームへリダイレクトされます。

メンテナンス中など指定期間内はメンテページを表示させる

メンテナンス中など開始と終了時間が決まった指定期間の間はメンテページなど別ページを表示させたい場合に利用します。

# "2021/01/26 14:00:00" から "2021/01/26 15:59:59" の間は
# 全てのアクセスを メンテナンスページ "/maintenance.html" へリダイレクトする
RewriteCond %{TIME} >20210126135959
RewriteCond %{TIME} <20210126160000
RewriteRule .* /maintenance.html [R=302,L]

上記のサンプルでは2021年1月26日の14時から2021年1月26日の15時59分59秒までの間はサイト内の全てのアクセスはメンテページ “/maintenance.html” へリダイレクトされます。

指定日時以降にリダイレクトさせるが特定IPからのアクセスはそのまま表示させる

期間限定で運用するキャンペーンサイトやキャンペーンページで終了日を迎えた場合に別ページや別サイトへリダイレクトさせたい場合に利用します。

# "2021/01/26 14:00:00" 以降の時間に
# IPアドレスが "192.168.0.111" からのアクセスはそのまま表示させ
# それ以外は指定ページや別サイトURLへリダイレクト 
RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.111$
RewriteCond %{TIME} >20210126135959
RewriteRule .* http://example.com [R=302,L]

上記のサンプルでは2021年1月26日の14時以降に指定した別ページや別サイトへリダイレクトされますが、IPアドレス “192.168.0.111” からのアクセスはそのまま表示されます。

事前にリダイレクトのテストをする場合など、指定したIPアドレスからのアクセスのみリダイレクトさせる場合は以下のようにします。

RewriteCond %{REMOTE_ADDR} ^192\.168\.0\.111$
RewriteCond %{TIME} >20210126135959
RewriteRule .* http://example.com [R=302,L]

コメント

タイトルとURLをコピーしました