web-dev-qa-db-ja.com

Apple-touch-icon-precomposed.pngでエラーが発生するのはなぜですか?

私は新しいRails3プロジェクトを作成しましたが、私は私のサーバーログの中に何度も続くログを見ています。なぜ私はこれらの要求を受けているのですか、そしてどうすればこれらを避けることができますか?

2012-09-18 20:03:53 +0530に192.168.6.2のGET "/Apple-touch-icon-precomposed.png"を開始しました

ActionController :: RoutingError(ルートが一致しない[GET] "/Apple-touch-icon-precomposed.png"):

私はこのリンクをどこにも与えていないので、このイメージをどこにもレンダリングしたくありません。私はなぜこのリソースがロードされようとしているのかわかりません。

225
Akash Agrawal

デバイスの所有者がそれにサイトを追加した場合、私はAppleデバイスがそれらの要求をすると思います。これはfaviconに相当します。解決するには、2つの100×100 pngファイルを追加し、それをApple-touch-icon-precomposed.pngおよびApple-touch-icon.pngとして保存し、それをサーバのルートディレクトリにアップロードします。その後、エラーはなくなるはずです。

私はサイトのルートディレクトリから画像をロードしようとしたログでApple-touch-icon-precomposed.pngとApple-touch-icon.pngのためのたくさんのリクエストに気づきました。私は最初それがモバイルテーマとプラグインの設定ミスであると思いました、しかし後で装置所有者がそれにサイトを追加するならばAppleデバイスがそれらの要求をすることがわかりました。

出典: ウェブマスターが404エラーログを分析する理由(2012年3月、Martin Brinkmann著)

200
Joao Leme

Safari Webブラウザ(Appleデバイス)のユーザーがあなたのサイトにアクセスした場合。サイトアイコンが<head>で定義されていない場合、ブラウザは次の順序でサイトアイコンを取得しようとします。

  1. Apple-touch-icon-57x57-precomposed.png
  2. アップルタッチアイコン57x57.png
  3. Apple-touch-icon-precomposed.png
  4. Apple-touch-icon.png

この問題を解決するには、Safari WebブラウザまたはAppleデバイス用のアイコンを定義します。あなたのサイトのヘッドセクションにこのようなものを追加してください:

<link rel="Apple-touch-icon" href="/custom_icon.png"/>

あなたが<head>をきれいにしておきたいならば、それから適切な名前であなたのサイトのルートディレクトリにアイコンをアップロードしてください。

デフォルトのアイコンサイズは57ピクセルです。

あなたは iOS開発者ライブラリ でより多くの詳細を見つけることができます。

60
Anand Kumar

ここでgooglingを終了した場合、これはWebサーバーのログがいっぱいになるこのエラーを防ぐための単純な構成です。

Apache仮想ホスト

Redirect 404 /Apple-touch-icon-precomposed.png
<Location /Apple-touch-icon-precomposed.png>
    ErrorDocument 404 "Apple-touch-icon-precomposed does not exist"
</Location>

Nginxサーバーブロック:

location =/Apple-touch-icon-precomposed.png {
        log_not_found off;
        access_log off;
}

シモンズ:あなたもApple-touch-icon.pngfavicon.icoを追加したいかもしれません。

5

これは、ユーザーが自分のiOSホーム画面にそのサイトをブックマークしていない場合でも発生する可能性があることに注意してください。たとえば、iOS for Chromeを使用してページを開いたときはいつでもGET "/Apple-touch-icon-precomposed.png"が行われます。

私はこれと他の非HTML 404リクエストを私のApplicationControllerで以下のように処理しました:

respond_to do |format|
  format.html { render :template => "error_404", :layout => "errors", :status => 404 }
  format.all { render :nothing => true, :status => 404 }
end

format.allレスポンスはこのPNGファイル(私のサイトには存在しません)のような画像を処理します。

5
Tinynumbers

quiet_assets のようなgemがあります。私と同じように、これらのファイルをRailsアプリに追加する必要がない場合は、ログ内のこれらのエラーを抑制します。

https://github.com/davidcelis/quiet_safari

3
davidcelis

アイコンがあらゆる種類のAppleデバイスできれいに見えることを気にしないのであれば、単に追加するだけです。

get '/:Apple_touch_icon' => redirect('/icon.png'), constraints: { Apple_touch_icon: /Apple-touch-icon(-\d+x\d+)?(-precomposed)?\.png/ }

あなたのconfig/routes.rbファイルへ、そしていくつかのicon.pngをあなたのpublicディレクトリへ。 404.htmlの代わりにicon.pngにリダイレクトすることもできます。

2

やっと解決しました!これは、MacデバイスのWebクリップ機能です。ユーザがDock o Desktopにあなたのウェブサイトを追加したい場合は、このアイコンを要求します。

You may want users to be able to add your web application 
or webpage link to the Home screen. These links, represented 
by an icon, are called Web Clips. Follow these simple steps 
to specify an icon to represent your web application or webpage
on iOS.

詳細情報:https://developer.Apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/ConfigurationWebApplications/ConfigurationWebApplications .html

解決方法?:問題解決のためのアイコンを追加してください。

2
molavec

別の解決策はあなたのroutes.rbに単にルートを追加することです。

これは基本的にAppleの要求をキャッチして404をクライアントに返します。これにより、ログファイルが乱雑になりません。

# routes.rb at the near-end
match '/:png', via: :get, controller: 'application', action: 'Apple_touch_not_found', png: /Apple-touch-icon.*\.png/

それからあなたのapplication_controller.rbにメソッド 'Apple_touch_not_found'を追加してください

# application_controller.rb
def Apple_touch_not_found
  render  plain: 'Apple-touch icons not found', status: 404
end
1
Roger

同じことが私にも起こっています。そして@Joao Lemeが言ったように、それはそれが彼らのデバイスホームスクリーンにサイトをブックマークしているユーザーに関連しているようです。

しかし、ログにエラーがあったとしても、それは舞台裏で起こっており、ユーザーにはそのエラーが見えないことに気づきました。一般的なApple-touch-iconまたはApple-touch-icon-precomposedにデフォルト設定されるまで、または現在のページの小さなスクリーンショットを生成するまで、デバイスはその解像度に固有のタッチアイコンを要求します(これはありません)。

確かに、アイコンを/ publicディレクトリに置いてください。

0
Brian

適切な名前と呼ばれるゼロサイズのファイルを作成するだけです。

追加のデータ転送もそれ以上のロギング行もなく、要求は満たされます。

0
Dave G