久しぶりにmod_perlプログラミング (3)

  • 投稿日:
  • by
  • カテゴリ:

前回の続き。

特定のURLに特定のリファラを持ってアクセスがあった場合、どっか他のサイトにリダイレクト!
ってのを作ってみる。

httpd.confはこんな感じ。

PerlSwitches -I/usr/local/apache2/site_perl
PerlTransHandler Apache::Trans

で、Apache::Transはこんな感じ。

package Apache::Trans;

use strict;
use APR::Table ();
use Apache2::RequestRec ();
use Apache2::Const -compile => qw(OK DECLINED REDIRECT);

sub handler {
    my $r = shift;
    my $headers_table = $r->headers_in;

    if ($r->uri eq '/hoge.html' and
        $headers_table->get('Referer') =~ m,www\.yahoo\.co\.jp,) {
        $r->headers_out->set(Location => 'http://www.google.co.jp/');
        return Apache2::Const::REDIRECT;
    }
    return Apache2::Const::DECLINED;
}

1;

とりあえず、これで思い通りの事はできた。
こんなことしなくてもmod_rewriteで出来るじゃん!って突っ込みはナシの方向で。
mod_perl2の勉強をかねてるので、無駄なことでもいいのです。