| | 46 | * [http://www.kawaz.jp/pukiwiki/?mod_rewrite ずんWiki - mod_rewrite] |
| | 47 | > クッキーを見てリダイレクトさせる。 |
| | 48 | * [http://d.hatena.ne.jp/y-kawaz/20071010/1192076717 mod_rewrite で RBL を使ったアクセス制御を行う - y-kawazの日記] |
| | 49 | > 以下のような仕様のプログラムを、ここでは /etc/httpd/conf/bin/rbl_map.pl というファイル名で作成します。 |
| | 50 | {{{#!perl |
| | 51 | #!/usr/bin/perl |
| | 52 | use strict; |
| | 53 | use Socket qw(inet_aton); |
| | 54 | my @RBL_SERVERS = ('niku.2ch.net'); |
| | 55 | $| = 1; |
| | 56 | while(<STDIN>) { |
| | 57 | chomp; |
| | 58 | my $ip = $_; |
| | 59 | my $revip = join('.', reverse(split(/\./, $ip))); |
| | 60 | my $status = 'HAM'; |
| | 61 | foreach my $server (@RBL_SERVERS) { |
| | 62 | if(inet_aton("$revip.$server")) { |
| | 63 | $status = "SPAM"; |
| | 64 | last; |
| | 65 | } |
| | 66 | } |
| | 67 | print "$status\n"; |
| | 68 | } |
| | 69 | }}} |
| | 70 | > httpd.conf に以下のように記述します。 |
| | 71 | {{{ |
| | 72 | RewriteEngine on |
| | 73 | RewriteMap rbl-map prg:/etc/httpd/conf/bin/rbl_map.pl |
| | 74 | RewriteCond %{REQUEST_URI} ^/rbltest/ |
| | 75 | RewriteCond ${rbl-map:%{REMOTE_ADDR}} SPAM |
| | 76 | RewriteRule (.*) SPAM [F] |
| | 77 | }}} |