ここのサイトは CloudFlare を通しているのだが、そうするとアクセス解析的なことをする際に $_SERVER["REMOTE_ADDR"]
の値が CloudFlare 内のサーバの IP アドレスになってしまい、本来のビジターのそれを得られない。
そういう場合は代わりに $_SERVER["HTTP_CF_CONNECTING_IP"]
を参照する。自前で作っている PHP アプリケーションの場合はそれだけの話なのだが、このブログの場合はどうだろうか。このブログは WordPress で運用している。
must-use plugin というものを使う。これは WordPress のメインの処理に先駆けた早い段階で読み込まれる。<blog-root>/wp-content/mu-plugins/ip-override.php
的なファイルを編集し
if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
$_SERVER["REMOTE_ADDR"] = $_SERVER["HTTP_CF_CONNECTING_IP"];
}
$_SERVER["REMOTE_ADDR"] = $_SERVER["HTTP_CF_CONNECTING_IP"];
}
てな感じのコードを書いておく。