Back

南河考研 Script 配給室

時間帯によってリンク先を振り分ける"CGI篇"

[2通りのリンクチェンジ] [24通りのリンクチェンジ]

「時間帯によって、リンク先のファイルを変更することができたら...。」という場合に最適です。
たとえば、aのファイルをおいているサーバーが、テレホーダイタイムなどの時間帯には混雑が激しく使いものにならない場合、bのファイルをおいている別のサーバーへ、その時間帯に限ってリンクしたい。または、内容やデザイン上の理由から、時間帯によって内容の違うページをみせたい。といったような利用方法が考えられます。

ここでは、CGIを使ってリンクの振り分けを実現する方法を紹介します。
このスクリプトはCGIを利用することが可能なサーバーでしか使用できません。CGIに関する基本的な技術については省きますので、WEBレスキューなどのサイトや書籍などでご確認ください。


●下記のスクリプトは、時間帯によって、2つのページへのリンクを切り替える仕様になっています。


#!/usr/local/bin/perl
#----------------------------------------------------------------------------
# 時間帯振り分けリンクスクリプト version 1.0a
#  Takashi.Ueda(ogami@bb.mbn.or.jp) http://plaza7.mbn.or.jp/%7eogami/
#
# このスクリプトは、下記のサイトで配布されているスクリプトを改造したものです。
#  Seiichi.F.Matsuo http://www.mietsu.tsu.mie.jp/minimum/
#----------------------------------------------------------------------------
# ジャンプ先のURLを設定
# 日中
$day = 'http://xxx.xxx.xx.xx/%7exxx/xxxa.html';
# 深夜
$night = 'http://xxx.xxx.xx.xx/%7xxx/xxxb.html';
#
# 時刻を取得
($sec,$min,$hour)=localtime(time);
# 時間帯の指定とURLの振り分け
if ($hour<=2) {
   print "Location: $night\n\n"; # 0時0分〜2時59分の場合
}
elsif ($hour<=22) {
   print "Location: $day\n\n"; # 3時0分〜22時59分の場合
} 
elsif ($hour<=23) {
   print "Location: $night\n\n"; # 23時0分〜23時59分の場合
}

上のスクリプトをコピーしてエディターで貼り付け、拡張子を"cgi"としたファイル名で保存するか、もしくは次のファイルをダウンロードののち解凍してください。

flexacgi.lzh......1,638byte

各設定箇所を書き換えたのち、所定のディレクトリへFTPして、パーミッションを755に設定して実行権を与えます。あるページからflexa.cgiへリンクすれば、スクリプトの設定通りに、時間帯によってリンク先が振り分けられます。

#!/usr/local/bin/perlは、あなたのサーバーにあるperlまでのパスを通してください。
ここでは、$day$nightの2つのページへの自動リロードを設定しています。
$hour<=2(0時0分〜2時59分)には$nightで指定したURLへ、$hour<=22(3時0分〜22時59分)には$dayで指定したURLへ、$hour<=23(23時0分〜23時59分)には$nightで指定したURLへジャンプします。


●下記のスクリプトは、時間帯ごとに24の異なったページへリンクを切り替える仕様になっています。
動作サンプルはこちら


#!/usr/local/bin/perl
#----------------------------------------------------------------------------
# 時間帯振り分けリンクスクリプト version 1.0b
#  Takashi.Ueda(ogami@bb.mbn.or.jp) http://plaza7.mbn.or.jp/%7eogami/
#
# このスクリプトは、下記のサイトで配布されているスクリプトを改造したものです。
#  Seiichi.F.Matsuo http://www.mietsu.tsu.mie.jp/minimum/
#----------------------------------------------------------------------------
# ジャンプ先のURLを設定
# 24時間分のリンク先
$t0 = 'http://xxx.xxx.xx.xx/%7exxx/xxxa.html';
$t1 = 'http://xxx.xxx.xx.xx/%7xxx/xxxb.html';
$t2 = 'http://xxx.xxx.xx.xx/%7xxx/xxxc.html';
$t3 = 'http://xxx.xxx.xx.xx/%7xxx/xxxd.html';
$t4 = 'http://xxx.xxx.xx.xx/%7xxx/xxxe.html';
$t5 = 'http://xxx.xxx.xx.xx/%7xxx/xxxf.html';
$t6 = 'http://xxx.xxx.xx.xx/%7xxx/xxxg.html';
$t7 = 'http://xxx.xxx.xx.xx/%7xxx/xxxh.html';
$t8 = 'http://xxx.xxx.xx.xx/%7xxx/xxxi.html';
$t9 = 'http://xxx.xxx.xx.xx/%7xxx/xxxj.html';
$t10 = 'http://xxx.xxx.xx.xx/%7xxx/xxxk.html';
$t11 = 'http://xxx.xxx.xx.xx/%7xxx/xxxl.html';
$t12 = 'http://xxx.xxx.xx.xx/%7xxx/xxxm.html';
$t13 = 'http://xxx.xxx.xx.xx/%7xxx/xxxn.html';
$t14 = 'http://xxx.xxx.xx.xx/%7xxx/xxxo.html';
$t15 = 'http://xxx.xxx.xx.xx/%7xxx/xxxp.html';
$t16 = 'http://xxx.xxx.xx.xx/%7xxx/xxxq.html';
$t17 = 'http://xxx.xxx.xx.xx/%7xxx/xxxr.html';
$t18 = 'http://xxx.xxx.xx.xx/%7xxx/xxxs.html';
$t19 = 'http://xxx.xxx.xx.xx/%7xxx/xxxt.html';
$t20 = 'http://xxx.xxx.xx.xx/%7xxx/xxxu.html';
$t21 = 'http://xxx.xxx.xx.xx/%7xxx/xxxv.html';
$t22 = 'http://xxx.xxx.xx.xx/%7xxx/xxxw.html';
$t23 = 'http://xxx.xxx.xx.xx/%7xxx/xxxx.html';
#
# 時刻を取得
($sec,$min,$hour)=localtime(time);
# 時間帯の指定とURLの振り分け
if ($hour<=0) {
   print "Location: $t0\n\n"; # 0時0分〜0時59分の場合
}
elsif ($hour<=1) {
   print "Location: $t1\n\n"; # 1時0分〜1時59分の場合
} 
elsif ($hour<=2) {
   print "Location: $t2\n\n"; # 2時0分〜2時59分の場合
}
elsif ($hour<=3) {
   print "Location: $t3\n\n"; # 3時0分〜3時59分の場合
}
elsif ($hour<=4) {
   print "Location: $t4\n\n"; # 4時0分〜4時59分の場合
}
elsif ($hour<=5) {
   print "Location: $t5\n\n"; # 5時0分〜5時59分の場合
}
elsif ($hour<=6) {
   print "Location: $t6\n\n"; # 6時0分〜6時59分の場合
}
elsif ($hour<=7) {
   print "Location: $t7\n\n"; # 7時0分〜7時59分の場合
}
elsif ($hour<=8) {
   print "Location: $t8\n\n"; # 8時0分〜8時59分の場合
}
elsif ($hour<=9) {
   print "Location: $t9\n\n"; # 9時0分〜9時59分の場合
}
elsif ($hour<=10) {
   print "Location: $t10\n\n"; # 10時0分〜10時59分の場合
}
elsif ($hour<=11) {
   print "Location: $t11\n\n"; # 11時0分〜11時59分の場合
}
elsif ($hour<=12) {
   print "Location: $t12\n\n"; # 12時0分〜12時59分の場合
}
elsif ($hour<=13) {
   print "Location: $t13\n\n"; # 13時0分〜13時59分の場合
}
elsif ($hour<=14) {
   print "Location: $t14\n\n"; # 14時0分〜14時59分の場合
}
elsif ($hour<=15) {
   print "Location: $t15\n\n"; # 15時0分〜15時59分の場合
}
elsif ($hour<=16) {
   print "Location: $t16\n\n"; # 16時0分〜16時59分の場合
}
elsif ($hour<=17) {
   print "Location: $t17\n\n"; # 17時0分〜10時59分の場合
}
elsif ($hour<=18) {
   print "Location: $t18\n\n"; # 18時0分〜18時59分の場合
}
elsif ($hour<=19) {
   print "Location: $t19\n\n"; # 19時0分〜19時59分の場合
}
elsif ($hour<=20) {
   print "Location: $t20\n\n"; # 20時0分〜20時59分の場合
}
elsif ($hour<=21) {
   print "Location: $t21\n\n"; # 21時0分〜21時59分の場合
}
elsif ($hour<=22) {
   print "Location: $t22\n\n"; # 22時0分〜22時59分の場合
}
elsif ($hour<=23) {
   print "Location: $t23\n\n"; # 23時0分〜23時59分の場合
}

上のスクリプトをコピーしてエディターで貼り付け、拡張子を"cgi"としたファイル名で保存するか、もしくは次のファイルをダウンロードののち解凍してください。

flexbcgi.lzh......1,975byte

各設定箇所を書き換えたのち、所定のディレクトリへFTPして、パーミッションを755に設定して実行権を与えます。あるページからflexb.cgiへリンクすれば、スクリプトの設定通りに、時間帯によってリンク先が振り分けられます。

#!/usr/local/bin/perlは、各自の環境に合わせて変更する必要があります。あなたのサーバーにあるperlまでのパスを通してください。
ここでは、$t0から$t23までの24のページへの自動リロードを設定しています。
$hour<=0(0時0分〜0時59分)には$t0で指定したURLへ、$hour<=1(1時0分〜1時59分)には$t1で指定したURLへというように、それぞれ設定したURLへジャンプします。



top of this page

BackIndex