#!/usr/local/bin/perl # # このreflimit.txtはreflimit.cgiに名前を変更してからご利用ください。 # # 直接アクセスされては困るページ制限(参照制限) v1.00 # (c)rescue.ne.jp #---------------------------------------------------------------------------------------- #ここに設定したURLを「含む」URLのページからリンククリックしてこのファイルに #アクセスされないと表示されません. # #(参考)他からの直接リンク防止のみならば、あなたの同サーバ内のホームページの中のどのページからも #アクセスできるようにするには、あなたのホームページを示す一番短いURL記述を設定しておきます. #例:http://www.home.page/~user/ # #(参考)特定のページからのクリックアクセス以外はすべて拒否するには、そのページのURLを #そのまま記述します. #例:http://www.home.page/~user/where/sample.html #---------------------------------------------------------------------------------------- $ref_url = 'http://your.home.page.url/'; #---------------------------------------------------------------------------------------- #あるページ(HTML)をこの参照制限したい場合は、そのファイルの冒頭にこのファイルの__END__以上を #そのままコピーして挿入し、ファイル名の拡張子を.cgiに変更して実行権(755)を与えます. #---------------------------------------------------------------------------------------- print "Content-type: text/html\n\n"; #どのページにあるリンクをクリックしたかを調査し、そのURLを得る. $ref = $ENV{'HTTP_REFERER'}; $ref =~ tr/+/ /; $ref =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; if (!($ref =~ /$ref_url/i)) { &error; } #※# # ●この参照制限は、どこかにリンクされてしまうことを防止することにもなりますが、 # その場合に、ダイレクトアクセスは許可したいという場合は、#※# の行を次の行に # 置き換えることで可能になります。 # # if ($ref ne '') { if (!($ref =~ /$ref_url/i)) { &error; }} while () { print; } exit; sub error { #設定した条件に合わないアクセスを検知したらこのメッセージを表示する(あたかもページが無いような表示) print <<'EOF'; 404 File Not Found

404 File Not Found !?

The requested object does not exist on this server. The link you followed is either outdated, inaccurate, or the server has been instructed not to let you have it. EOF exit; } #設定した条件に合えば__END__より下をそのままHTMLとして表示する __END__ OK

OK