Apache 特定のログを残さない

Baiduspiderのアクセス制限のついでに、同ロボットのログを残さないようにする。

httpd.confに以下を記述

============================================================================
Useragnt:にBaiduspiderがある場合mod_setenvifで独自の環境変数を定義する。
※log_offに1がセットされる。

SetEnvIf User-Agent Baiduspider log_off
============================================================================
次に、ログの設定箇所に、
「設定した変数がない場合」
を追記する。

CustomLog /var/log/httpd/access_log combined env=!log_off
============================================================================

(その他の例)

BrowserMatch Baiduspider log_off
※BrowserMatchはSetEnvIfの特例。前段と同じ効果となる。

SetEnvIf Remote_addr 192.168.0. log_off
※IPアドレスで判断。

SetEnvIf Referer “http://www.example.com/” log_off
※リファラで判断。

============================================================================
<FilesMatch \.(jpg|gif|png)$>
SetEnvIf Referer “http://www.example.com/” log_off
</FilesMatch>
などとして、外部からの直リンクだけログに残すとか。

robots.txtでロボットのクロールを規制する

何気にApacheのログをみると、半分近くがBaiduspiderのアクセス。
1週間に271493アクセス。2秒に1回か。。
まぁ許容範囲ではあるが運用しているPCは貧弱だし中国の検索サイトだし制限してみる。

検索すると、Baiduspiderはrobots.txtを無視するとの記事もあったが、
robots.txtでアクセス制限というのをしたことがなかったので、
robots.txtで制限してみることに。

robots.txtの設置場所はroot。
robots.txtの書式は以下の通り。
====================================
User-agent: [User-agent名]
Disallow: [制限したいディレクトリ]
====================================
要はロボットが理解できればOKなわけで、
一般的にはUser-agent:にワイルドカードとしてアスタリスクが使えたり、
GooglebotなどはDisallow: に/*.imgとか書いても理解してくれるらしい。

ということで、以下をrootに設置
====================================
User-agent: Baiduspider
Disallow: /
====================================

様子見。

php-4.4.4インストール

事前に必要なパッケージインストール

apt-get update
apt-get install flex \
apache-devel \
bzip2-devel \
libmcrypt libmcrypt-devel \
ncurses ncurses-devel \
openssl-devel \
libjpeg-devel zlib-devel libpng-devel \
t1lib-devel \
imap imap-devel \
openldap openldap-devel \
db4-devel

アーカイブダウンロード
展開
展開したディレクトリへ移動

===================================
MysqlとPostgresqlはソースから
/usr/local/mysql,/usr/local/pgsql/
にインストールしている
===================================

./configure \
–with-mysql=/usr/local/mysql \
–with-pgsql=/usr/local/pgsql/ \
–enable-bcmath \
–enable-calendar \
–enable-dio \
–enable-exif \
–enable-ftp \
–enable-mbregex \
–enable-mbstring \
–enable-pcntl \
–enable-shmop \
–enable-sockets \
–enable-sysvmsg \
–enable-sysvsem \
–enable-sysvshm \
–enable-wddx \
–enable-zend-multibyte \
–prefix=/usr \
–with-apxs \
–with-bz2 \
–with-config-file-path=/etc \
–with-gettext \
–with-iconv \
–with-libmbfl \
–with-mcrypt \
–with-mime-magic \
–with-mod_charset \
–with-ncurses \
–with-openssl \
–with-gd –with-jpeg-dir=/usr –with-zlib-dir=/usr \
–enable-gd-jis-conv \
–enable-gd-native-ttf \
–with-t1lib \
–with-ttf \
–with-ldap \
–enable-dba \
–with-db4 \
–with-flatfile \
–with-inifile

make
make install

Apache再起動
/etc/rc.d/init.d/httpd restart