mod_rewriteで日時指定の例

(2013.08.01 moded)

mod_rewriteで日時指定、
テスト環境で試してみました。

<=とか>=の演算子は使えません。
!は使えます。(notの意味)
geはダメです。

例1:
2013年7月30日以降はc.htmlを表示
RewriteEngine On
RewriteBase /test/
RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY} >20130730
RewriteRule ^a\.html$ c.html [R,L]

例2:
13時55分以前ならc.htmlを表示
(明記してないけど13:55~13:58は遷移せずa.htmlを表示)
13時58分以降ならb.htmlを表示
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1355 RewriteRule ^a\.html$ c.html [R,L] RewriteCond %{TIME_HOUR}%{TIME_MIN} >1358
RewriteRule ^a\.html$ b.html [R,L]

例3:
2013年7月31日14時10分以前はc.htmlを表示
(この間はa.htmlを表示)
2013年8月1日14時9分以降はb.htmlを表示
RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR}%{TIME_MIN} <201307311410 RewriteRule ^a\.html$ c.html [R,L] RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR}%{TIME_MIN} >201308011409
RewriteRule ^a\.html$ b.html [R,L]

例4:
2013年7月31日でなければc.htmlを表示
(7月31日はa.htmlを表示)
RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY} !20130731
RewriteRule ^a\.html$ c.html [R,L]

ということで、<=とかが使えないので
2013年8月1日8時59分まではb.htmlに遷移させて
2013年8月1日9時00分からはc.htmlに遷移させたい
といった場合は、
<201308010900 ←8時59分までこっち
>201308010859 ←9時からこっち
という風になりそう。

ということで、!がつかえるので。
>= → !<
<= → !>
と考えられます。

2013年8月1日8時59分まではb.htmlに遷移させて
2013年8月1日9時00分からはc.htmlに遷移させたい
といった場合は、

!>201308010859 ←8時59分までこっち
!<201308010900 ←9時からこっち


という風になりそう。

コメント欄で指摘いただきましたので訂正(^^;
<201308010900 ←08:59:59までこっち
!<201308010900 ←09:00:00からこっち
になります!

ご参考までに、こちらもどうぞ↓
mod_rewrite – Apache HTTP Server
【メモ】htaccessのRewriteCondで日時指定

1コメント

 Add your comment
  1. うーん、惜しい。というか残念ながら悪くなった。
    ———————————————————
    2013年8月1日8時59分まではb.htmlに遷移させて
    2013年8月1日9時00分からはc.htmlに遷移させたい
    ———————————————————

    !>201308010859 ←8時59分までこっち(×) 正解は08:59:00以前
    !<201308010900 ←9時からこっち
    となるので
    08:59:00<時刻<09:00:00 の間の時刻が条件に無いため問題が発生します

    この場合は、もっとスマートに
    <201308010900 ←08:59:59までこっち
    !<201308010900 ←09:00:00からこっち
    これでもれはなくなる

コメントをどうぞ

Popular Posts

Sorry. No data so far.