[Apache] "File does not exist"をエラーログに記録させない方法

Apacheのエラーログで、"File does not exist"が記録されるのが目障りなので、回避方法を紹介します。
[Sun Feb 17 18:33:59 2013] [error] [client 123.123.200.99] File does not exist: /var/www/html/apple-touch-icon-57x57-precomposed.png
[Sun Feb 17 18:33:59 2013] [error] [client 123.123.200.98] File does not exist: /var/www/html/apple-touch-icon-57x57.png
[Sun Feb 17 18:33:59 2013] [error] [client 123.123.200.99] File does not exist: /var/www/html/apple-touch-icon-precomposed.png
[Sun Feb 17 18:34:00 2013] [error] [client 123.123.200.99] File does not exist: /var/www/html/apple-touch-icon.png
このエラーはリンク切れなどを教えてくれるのでありがたいこともありますが、"apple-touch-icon"などは「存在しないわかってるよ」的なことも多々あります。

他にもよくあるのがこういうやつ。
  • favicon.ico
  • MSOffice
  • _vti_bin
  • myadmin
  • phpMyAdmin
  • scripts
  • sql
  • web
favicon.icoやapple-touch-iconはファビコンを作れば解決なのですが、いちいちファビコン作るのがめんどくさい場合もあるでしょう。
"MSOffice","_vti_bin"みたいな存在しないファイルへのアクセスは、空ファイルを作れば回避できますがそれもイマイチ。

ここはひとつ、Apacheの設定でスマートに解決したいものです。

設定方法

Apacheの設定ファイル(httpd.confとか.htaccessとか)にこのように書けばOKです。
    # 存在しないファイルに対して Goneページを表示
    RedirectMatch gone ^/(MSOffice|_vti_bin|myadmin|mysql|php|phpMyAdmin|scripts|sql|web)$

    RedirectMatch gone ^/apple-touch-icon*
これで当該URLにアクセスすると、ブラウザには下記のような"Gone"ページが表示されて、エラーログには記録されなくなります。
Gone

The requested resource
/mysql
is no longer available on this server and there is no forwarding address. Please remove all references to this resource.

Happy Apaching!

参考

[システム運用] error_log に MSOffice と _vti_bin に関するエラーが記録されるのを回避
カテゴリ:

人気記事