me44.org

Top > 管理人のメモ帳

000004: favicon.icoをApache環境下に設定する

使用バージョン:CentOS 5.1, Apache 2.2.3
わしゃapacheは素人でのぉ、このfaviconの設置ってやつ・・・以外と大変ぢゃった・・・
わしが成功したやり方を披露する・・・というと、なにやら偉そうぢゃが、以下の参考ページのうちの1つの方法
についてやっと理解できて成功に至った・・・ってとこだな。へっへへ 参考1

favicon.icoの作成

わかりやすい説明付の作成機能のあるサイトや作成ツールを提供するサイトが多数あるので、
わしが補足する必要はないぢゃろ。とわいえ、いちお、わしのやった手順を書いとく。
(1)アイコンを描く
Windowsマシンで、16x16ピクセルのBMP(ビットマップ)でアイコンを描く。お絵書きツールはWindowsのPaintでもなんでもよひ。
わしわ女性様の絵を描くのが好きでのぉ。CorelのPaint Shop Proをもっとるのでそれをつこた。
(2)BMPファイルをWindows Iconファイルに変換
@icon変換といふツールで(1)のファイルをWindows Iconファイルに変換すた。
IEがこの形式しかfaviconとしてサポートしないんだそうぢゃ。
なお、IEと他ブラウザで別のアイコンファイルにするだの、マルチアイコンにするだの(@icon変換でも作成可)、
凝りたい御仁は、お好きになされ。
できあがったファイルを設置するCentOSマシンのどっかにとりあえずもっていく。

トーシロに今ひとつ不親切な解説

ググるとドキュメントトップにfavicon.icoファイルに置くだけだの、httpd.confにAddTypeを1行追加する
だけだのいろいろ出てくるが、どれをやってもapacheのアクセスログには戻り値403(Forbidden、ファイルに対する
アクセス権なし)が残るだけぢゃった。
追記
Forbiddenになる要因の1つに SELinux の設定がある。本ページの後段は、
SELinuxの設定(SELinux を enforcing のまま各ファイルに適切なパーミッションを)
を設定するか、または、SELinux を permissive か disabled に設定)を行っても
駄目な場合に試すとよひぢゃろう。SELinux の設定ファイルは、/etc/selinux/config。

いろいろやってみたところ、参考1にある「Apacheでの設定 - RewriteRuleを利用する場合」でなんとかうまくいった。

favicon.icoファイルの置き場所

httpd.confとか、ドキュメントディレクトリ周辺を見てたら、どうもapacheの付録(といってよいのかわからんが)
のアイコンが/var/www/icons/ディレクトリにあり、httpd.confでその/var/www/icons/にエイリアスとやらの設定が
されていることに気づいた。とりあえず、ここにfavicon.icoファイルを置いとくことにすた。

RewriteRuleの設定

上記、参考1を参考に、httpd.conf(.htaccessではなく)に以下の設定を行った。
RewriteEngine On
RewriteCond %{REQUEST_URI} "favicon.ico$"
RewriteRule "(.*)(favicon.ico$)" "/icons/favicon.ico" [N,PT]
httpd.confを変更すたのでapacheの再起動ぢゃな
# service httpd restart

ページでの設定

<link rel="shortcut icon" href="/icons/favicon.ico"/>
<link rel="icon" href="/icons/favicon.ico"/>
hrefにある「/icons/」の部分が上記のエイリアス設定によってファイルシステム上の
「/var/www/icons」ディレクトリに置き換わるらしい。

動作確認

動作確認をする際は、ブラウザのキャッシュをクリアしてから行うのぢゃ。
なお、IE7の場合は、キャッシュだけでなく履歴もクリアせんとアカンそうぢゃ。
IE7でアクセスした時のapacheのアクセスログを見てもらうとわかるのぢゃが、履歴が残った状態だと、前回までのアクセスで
favicon.icoが取得できたか否かに関係なく、IE7はfavicon.icoを取得しにいかないようぢゃて。

管理人のじぃやへメール


Copyright © me44.org All rights reserved