海外からの不明アクセスが減る (11/25)
下記の方法で、廃棄リダイレクトを続けていましたが、最初は相変わらずのアクセスがありました。しかし最近はめっきり減り、通常のアクセスになってきました。効果があったものと思います。
それとは別にGoogle等は、ロボット以外でもアナリティス等もアクセスしてきますから、正常なクローラーとして扱う必要があります。今後これを加えてゆく予定です。
ブログにスパム? 海外からアクセス
it-azusaのトップに時々多量のアクセスがあります。ロボットでもなく、通常のアクセスでもないようです。アクセスログを調べていますが、米国だったり、他の国だったり、日本ではないようです。
リファラスパムという可能性もあるようです。リファラスパムというのは、このようにアクセス解析をおこなっているものが、リファラを辿って送信先のページをクリックするのを狙っているようです。最悪の場合はウィルスを拾うことにもなりかねないようです。
いずれにしろ、海外からのアクセスはロボットを除いては必要ないので、これをシャットアウトしようと思います。
前回の「IPアドレスの計算方法」で海外かどうかの判断ができるようになりました。
海外からのアクセスを制限する方法は、.htaccessファイルでおこなう方法や、Googleアナリティクスのフィルタ等がいくつか紹介されています。これらはプログラムの知識なしにできるので便利だと思います。ただ、.htaccessでおこなう方法は前回作成したipアドレスのデータベースが書かれているファイルをダウンロードするらしく、.htaccessファイルが少し重苦しい感じを受けます。処理そのものは多分高速だと思いますが。
PHPコードで記述
ここでは、自作のPHPプログラムでアクセスの制限をしようと思います。
そこで問題になるのは、WordPressのどこにPHPコードを書けばいいかということです。最初の頃はWordPressの仕組みがよく分からないので、ウィジェットにPHPコードを書けるプラグイン「PHP Code Widget」を使用していました。しかしあくまでコンテンツ用のせいなのか、肝心のheader()関数はエラーになり、受け付けてくれませんでした。
その後調べてみると、WordPressには「ショートコード」というPHPコードを呼び出す方法が用意されていることが分かりました。また同時に、テーマの編集で、page.phpやfunction.phpを直接編集するのが普通の方法ということも分かりました。逆にプラグインでPHPコードを書くのは、セキュリティホールになり易いく、避けた方がいいらしいことも。
テーマの編集
トップページなので、テーマの編集でindex.phpを編集します。
index.phpの先頭、
<?php /** * @package WordPress * @subpackage My_Theme */ get_header(); ?>
を、
<?php /** * @package WordPress * @subpackage My_Theme */ include __DIR__ . /**/mycode.php' ; get_header(); ?>
に変更する。
mycode.phpに制限コードを記述しておきます。/**/はmycode.phpの相対ディレクトリです。自動インストールのWordPressでは、仮想ディレクトリになるので、少し面倒かもしれません。
投稿記事のページはsingle.phpを同様に編集します。
mycode.phpでは、
if ($ipkaigai){ $nurl = "http://" ; $ltxt = "Location: " . $nurl; header($ltxt,TRUE,301); exit; }
等のコードを書きます。ここでは存在しないURLに永久リダイレクトしています。送信先がブラウザなら、DNSか何らかのエラーを出すと思います。行儀の悪いアクセスにはこのくらいの返事でいいでしょう。