Mengapa saya mendapatkan kesalahan untuk apple-touch-icon-precomposed.png

247

Saya telah membuat proyek rails3 baru tetapi saya melihat log berikut berkali-kali di log server saya. Mengapa saya mendapatkan permintaan ini dan bagaimana saya bisa menghindari ini?

Mulai DAPATKAN "/apple-touch-icon-precomposed.png" untuk 192.168.6.2 di 2012-09-18 20:03:53 +0530

ActionController :: RoutingError (Tidak ada rute yang cocok [GET] "/apple-touch-icon-precomposed.png"):

Saya belum memberikan tautan ini di mana pun dan tidak ingin membuat gambar ini di mana pun. Saya tidak mengerti mengapa sumber ini dicoba untuk dimuat.

Akash Agrawal
sumber
4
Saya mendapatkan hal yang persis sama di proyek .net saya. tidak ada hubungannya dengan ruby. apa yang saya tidak mengerti adalah mengapa ini bukan kesalahan standar 404 tidak ditemukan. tapi itu bukan. hanya kesalahan perutean. saya dapatkan: Pengontrol untuk path '/apple-touch-icon-precomposed.png' tidak ditemukan atau tidak mengimplementasikan IController.
horace

Jawaban:

221

Saya kira perangkat Apple membuat permintaan tersebut jika pemilik perangkat menambahkan situs ke dalamnya. Ini setara dengan favicon. Untuk menyelesaikan, tambahkan 2 file 100 × 100 png, simpan sebagai apple-touch-icon-precomposed.png dan apple-touch-icon.png dan unggah ke direktori root server. Setelah itu, kesalahannya harus hilang.

Saya perhatikan banyak permintaan untuk apple-touch-icon-precomposed.png dan apple-touch-icon.png di log yang mencoba memuat gambar dari direktori root situs. Saya pertama kali berpikir itu adalah konfigurasi yang salah dari tema dan plugin seluler, tetapi menemukan kemudian bahwa perangkat Apple membuat permintaan tersebut jika pemilik perangkat menambahkan situs ke dalamnya.

Sumber: Mengapa Webmaster Harus Menganalisis Log Kesalahan 404 (Mar 2012; oleh Martin Brinkmann)

Joao Leme
sumber
52
Saya menemukan artikel yang bagus yang merinci semua yang ingin saya ketahui (dan banyak lagi): mathiasbynens.be/notes/touch-icons
Alexis
Dengan direktori root maksud Anda direktori aplikasi / publik atau direktori publik?
Bengala
Saya percaya penulis di atas berarti direktori root-dokumen web yang dikonfigurasi, misalnya di Apache 2.4 biasanya / var / www / htdocs
Hgehlhausen
70

Jika pengguna dari browser Web Safari (perangkat Apple) mengunjungi situs Anda. Browser mencoba mengambil ikon situs jika tidak ditentukan dalam <head>urutan sebagai berikut:

  1. apple-touch-icon-57x57-precomposed.png
  2. apple-touch-icon-57x57.png
  3. apple-touch-icon-precomposed.png
  4. apple-touch-icon.png

Untuk mengatasi masalah ini, tentukan ikon untuk browser web safari atau perangkat apple. Tambahkan sesuatu seperti ini ke bagian kepala situs Anda:

<link rel="apple-touch-icon" href="https://stackoverflow.com/custom_icon.png"/>

Jika Anda ingin tetap <head>bersih, unggah ikon ke root dir situs Anda dengan nama yang tepat.

The ukuran ikon default adalah 57px .

Anda dapat menemukan detail lebih lanjut di perpustakaan pengembang iOS .

Anand Kumar
sumber
Bahkan dengan definisi ini, saya masih mendapatkan 404 untuk apple-touch-icon-precomposed.png
Chris Haines
3
Sekarang direkomendasikan bahwa ukuran ikon default adalah 152 × 152 piksel untuk mengakomodasi iPad yang lebih baru.
Andrew Lott
2
Saya masih mendapatkan kesalahan yang sama, serta kesalahan perutean tambahan untuk custom_icon.png. By the way, saya mendapatkan kesalahan ini menjalankan rel dalam pengembangan di OSX 10.10.2 menggunakan Safari 8.0.3 sebagai browser.
7stud
8

Jika Anda berakhir di sini googling, ini adalah konfigurasi sederhana untuk mencegah kesalahan ini penuh dengan log server web:

Apache virtualhost

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

Blok server Nginx:

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

PS: Apakah mungkin Anda ingin menambahkan apple-touch-icon.pngdan favicon.icojuga.

Leopoldo Sanczyk
sumber
5

Perhatikan bahwa ini dapat terjadi bahkan ketika pengguna TIDAK mem-bookmark situs ke layar beranda iOS mereka - misalnya, setiap kali Anda membuka halaman menggunakan Chrome untuk iOS, ia melakukan a GET "/apple-touch-icon-precomposed.png".

Saya telah menangani ini dan permintaan non-HTML 404 lainnya di ApplicationController saya sebagai berikut:

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

The format.allrespon menangani gambar seperti PNG ini (yang tidak ada untuk situs saya).

Tukang timah
sumber
4

Ada permata seperti quiet_assets yang akan membungkam kesalahan ini di log Anda jika, seperti saya, Anda tidak ingin harus menambahkan file-file ini ke aplikasi Rails Anda:

https://github.com/davidcelis/quiet_safari

davidcelis
sumber
Ini adalah solusi terbaik ... tidak ada apa-apa selain frustrasi dan file log yang besar jika Anda tidak menghambat logging. Ukuran yang diminta berubah ketika Apple memutuskan ... menjaga kami mengejar dengan lebih banyak versi favicon sialan yang sama.
vanboom
4

Jika Anda tidak peduli dengan ikon yang terlihat cantik di semua jenis perangkat Apple, cukup tambahkan

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

ke config/routes.rbfile Anda dan beberapa icon.pngke publicdirektori Anda . Mengarahkan kembali ke 404.htmlalih-alih icon.pngbekerja juga.

Edward Khachatryan
sumber
Bekerja dengan baik di sini.
Wellington1993
3

Saya akhirnya terpecahkan !! Ini adalah fitur Klip Web pada Perangkat Mac. Jika pengguna ingin menambahkan situs web Anda di Dock o Desktop, ia meminta ikon ini.

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.

info lebih lanjut: https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html

cara mengatasi ?: Tambahkan ikon untuk memecahkan masalah.

molavec
sumber
2

Solusi alternatif adalah dengan hanya menambahkan rute ke rute Anda.rb

Ini pada dasarnya menangkap permintaan Apple dan membuat 404 kembali ke klien. Dengan cara ini file log Anda tidak berantakan.

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

kemudian tambahkan metode 'apple_touch_not_found' ke application_controller.rb Anda

# application_controller.rb
def apple_touch_not_found
  render  plain: 'apple-touch icons not found', status: 404
end
Roger
sumber
0

Hal yang sama terjadi pada saya. Dan ya, seperti yang dikatakan @Joao Leme, sepertinya ini terkait dengan pengguna yang menandai situs ke layar beranda perangkat mereka.

Namun, saya perhatikan bahwa meskipun ada kesalahan dalam log, itu terjadi di belakang layar dan pengguna tidak pernah melihat kesalahan. Saya menganggap perangkat membuat permintaan untuk ikon sentuh khusus untuk resolusinya (yang tidak ada) sampai default ke umum apple-touch-iconatau apple-touch-icon-precomposed, jika ada, atau menghasilkan screenshot kecil dari halaman saat ini.

FWIW, letakkan ikon di direktori / publik.

Brian
sumber
1
Menambahkan gambar tidak mengatasi masalah ini. Permintaan sedang dilakukan untuk aset yang tidak ada. Setiap kali permintaan ini terjadi, server merespons dan entri log ditulis. Itu tidak efisien.
Tass
-1

Cukup buat file berukuran nol yang disebut nama yang sesuai.

Permintaan akan dipenuhi tanpa transfer data tambahan atau garis logging lebih lanjut.

Dave G
sumber
1
Jawaban yang sangat lama, tetapi menyajikan file ukuran nol tidak disarankan sama sekali karena Klip Web (tautan yang dapat dibuat pengguna di layar beranda) akan muncul kotak kuadrat tanpa konten. Meskipun saya tidak suka anti-pola rumit yang dibuat oleh Apple, akan lebih baik menumpuk kesalahan dalam file log daripada menawarkan pengalaman shxt kepada pengguna jika ada.
Andrea Moro
-4

Cobalah untuk mengubah tautan dari

/apple-touch-icon-precomposed.png 

untuk:

<%=asset_path "apple-touch-icon-precomposed.png" %>
Jju
sumber
Saya belum memberikan tautan ini di mana pun dan tidak ingin membuat gambar ini di mana pun. Saya tidak mengerti mengapa sumber ini dicoba untuk dimuat.
Akash Agrawal
Cobalah temukan apple-touch-icon-precomposeddi direktori proyek Anda. Saya pikir tautan ini termasuk ke dalam templat layout, tetapi saya tidak yakin.
Jju
1
Ini adalah gambar standar yang diminta oleh iOS; itu tidak terkait dengan tautan apa pun di file proyek seseorang.
Brad Koch
1
Gambar ini juga diminta oleh droid razr saya, jadi saya tidak yakin itu asli hanya untuk perangkat iOS.
Tass
2
Mengapa Apple tidak bisa puas dengan favicon.ico seperti orang lain?
Tony Payne