13時24分52秒 [Web関連]
ウェブサーバのアクセスログ(のうちエラーログ)を眺めていると、apple-touch-icon-120x120-precomposed.png だとか apple-touch-icon.png などのURLにアクセスが多数あり、すべて 404 Not Found としてエラーが記録されています。
これらは、iPhoneなどで使われているiOSがホームアイコン画像を探すために問答無用でアクセスしてくるURLです。PC版ブラウザがfavicon.icoに問答無用でアクセスを試すのと同じです。
昔からよくあるエラーで、特に問題になるわけではないので放置していました。
ただ、やっぱりエラーログを眺めるときに、こういうどうでもいいエラーがあると煩わしいですし、何より毎回404 Not Foundページを返すと、サーバの転送量が無駄に増えてしまうので、何か軽いアイコンを1つ用意しておく方が良さげだな、と思い直しました。^^;
エラーログを見てみると、だいたい1回のアクセスで、以下の4つのURLに連続してアクセスがあります。
File does not exist: /home/nishishi/www/apple-touch-icon-120x120-precomposed.png
File does not exist: /home/nishishi/www/apple-touch-icon-120x120.png
File does not exist: /home/nishishi/www/apple-touch-icon-precomposed.png
File does not exist: /home/nishishi/www/apple-touch-icon.png
どうも一部のiOS端末では、
……というような動作をするみたいですね。
ただ、端末によっては上記の3~4だけにしかアクセスしないものも(エラーログからは)見えましたが。
毎回アクセスされる度に、都合4回の404 Nout Foundエラーが発生するのはなんとも無駄です。
うちのサイトで404エラー用に用意しているページはだいたい3.4KBあるので、(連続4回発生するとなると)毎回13.6KBも意味のないデータを返してしまいます。
それならば、放置するよりも何か小さいアイコンを用意しておく方が無駄な転送が発生しなくて済むよな、と思いました。
そもそも、アイコンの存在が見つかればそのiOS端末はアイコンデータをキャッシュするでしょうから、次からのアクセス頻度が減るかもしれませんし。
というわけで、iOS用のホームアイコン画像を作って1つ用意しておくことにしました。
iOS端末が問答無用で探すホームアイコン画像のファイル名は、上述の通り4種類ありました。
でも、もしかしたら端末によってはもっと別のファイルも探すのかもしれません。
とすると、ホームアイコン画像を作っておくとしても、どんなファイル名で用意するか? という問題があります。
というわけで、以下の対処方法を考えました。
これなら、サーバ上に置くホームアイコン画像は1つだけで済み、iOS端末側がどのファイル名に先にアクセスしても、最初の1回で画像を返すことができるので、404 Not Foundエラーの発生を回避できます。
まず、apple-touch-icon.png というファイル名でアイコン画像を1つ用意しました。
で、.htaccessファイルにはmod_rewriteを使って以下のように記述しました。
RewriteEngine on
RewriteRule ^apple-touch-icon-.*?\.png$ /apple-touch-icon.png [L]
上記(の2行目)では、リクエストされたURLが「apple-touch-icon-」で始まっていて「.png」で終わっている場合に、apple-touch-icon.pngファイルの中身を返すよう指示しています。(リダイレクトはしません。)
※前半の[書き換え前]側には先頭にスラッシュ記号は不要です。後半の[書き換え後]側には先頭にスラッシュ記号が必須です。
これなら、
確認したエラーログでは上記の4ファイルしかリクエストされていなかったんですが、ググってみると他のファイル名でのアクセスがある可能性もあるっぽいですね。例えば apple-touch-icon-72x72.png とか apple-touch-icon-152x152.png とか。
それらのファイル名でリクエストがあった場合も、すべて apple-touch-icon.png の中身を返します。(^_^;)
今のところ、私は apple-touch-icon.png を120×120サイズで作りました。
なので、iOS側がどんなサイズのアイコンをリクエストしたとしても、全部120×120サイズで返ります。
もしかしたら表示上の不具合が出るかもしれません。
……でもですよ、そもそも、私のウェブサイトをiOS端末のホーム画面に常に表示させておこう、などと考える方々が居るとは思えないんですよね。(^_^;;;
なので、たぶんこの画像をホームアイコン画像として実際に使うユーザが居ないと考えて問題ないと思っています。単に、iOS端末が問答無用でアクセスしてくるだけであって。
というわけで、たぶんこの方法で何も問題はないのではないかと考えています。(^_^;)
どうかな。^^;
この日記へのコメントはお気軽に! コメント数:0件
コメント数: 0件