Apache 上に設置した favicon.ico が表示されない。
SERVER
CentOS 5.4 上の Apache で運用している Web サイトに設置した favicon.ico が正しく表示されなくて調べてみたところ、アイコンファイルのファイルタイプが設定されていないことがわかりました。
favicon.ico が表示されない
Web ページにアイコンを設定する方法として、Web サイトに "favicon.ico" を設置する方法があります。
通常、サイトのトップページに "favicon.ico" を設定すれば、ページ読み込み時にそのアイコンがブラウザーのアドレスのところに表示されるようになるはずなのですけど、CentOS 5.4 の Apache でそれを試してみたところ、うまく読み込まれてくれませんでした。
調べてみると、Web サーバー上の favicon.ico へアクセスしたときに "text/plain" というファイルタイプが返されてしまっていたため、ブラウザーがそれをアイコンファイルだとは認識できずに、正しく表示されてくれなかった様子です。
ちなみに、アイコンファイルへアクセスした場合には、本来 "image/x-icon" というファイルタイプが返されなくてはならないようです。
正式には "image/vnd.microsoft.icon" をファイルタイプとしなければならないらしいのですが、今回試してみたときには上手く表示されなかったのと、Google や Yahoo! の favicon.ico へアクセスすると、平成 22 年 6 月 3 日現在では "image/x-icon" がファイルタイプとして返されるようだったので、ここでは "image/x-icon" として話を進めることにします。
ちょっとした勘違いで上手く表示されなかった可能性もあると思いますので、正式な方が好みの方はそれで設定してみるのも良いと思います。
アイコンのファイルタイプを追加する
Apache でファイルタイプを追加する方法はいくつかありますので、それらについて紹介してみようと思います。
.htaccess でファイルタイプを追加する
レンタルサーバーなどを利用していて favicon.ico が正しく表示できないような場合には、この方法で対応することが多いのではないかと思います。
レンタルサーバーにもよりますが、Apache 系の Web サーバーを利用している場合、".htaccess" というファイルを Web サイトのルートディレクトリーに設置することで、Web サーバーの設定を拡張することが出来るようになっていることがあります。
その場合、この ".htaccess" に次の行を記載することで、アイコンファイルのファイルタイプとして "image/x-icon" を設定することが出来ます。
AddType image/x-icon .ico
これで、アイコンファイルへアクセスしたときに、そのファイルがアイコンファイルであることをブラウザーが認識できるようになるので、アイコンファイルが正しく扱われることが期待できます。
正しく機能するかどうかは、Web サイトのページにアクセスして、そのアイコンがアドレスバーに表示されるかで確認することもできますが、キャッシュに残っていると表示されないこともあるので注意が必要です。
上手く表示されない場合には、Web サイト上のアイコンファイルに直接アクセスして、画面上にそれが正しく表示されるかどうかでチェックしてみるのも良いかもしれません。
mime.types ファイルを編集する
Apache が稼働しているサーバーの設定を変更することが出来るような場合には、例えば CentOS 5.4 であれば "/etc/mime.types" ファイルを編集して、アイコンファイルのファイルタイプを追加する方法があります。
image/x-icon ico
このように "ファイルタイプ" "拡張子" という形でファイルタイプの定義を追加して、Apache に設定を再度読み込ませることで、アイコンファイルへアクセスした際に、追加したファイルタイプが返されるようになります。
この場合、アイコンファイルに対して別のファイルタイプを個別に設定しているサイト以外は、全てここで設定したファイルタイプが有効になります。
サイトに個別のファイルタイプを設定する
一部のサイトだけにファイルタイプを設定したい場合には、そのサイトの <VirtualHost> や <Directory> ディレクティブの中で、次のようにしてファイルタイプを設定することも可能です。
AddType image/x-icon .ico
この記載自体は .htaccess で設定したものと同じです。
サイトに個別にファイルタイプを設定する場合は、Web サイトにファイルタイプを追加して起動時にそれを読み込ませるか、Web サイト制作者に必要に応じて .htaccess に記載させてその都度読み込ませるか、好きな方を選ぶ感じになると思います。