Perché visualizzo l'errore per apple-touch-icon-precomposed.png


247

Ho creato un nuovo progetto rails3 ma vedo i seguenti registri molte volte nei registri del mio server. Perché ricevo queste richieste e come posso evitarle?

Ha iniziato a OTTENERE "/apple-touch-icon-precomposed.png" per 192.168.6.2 al 2012-09-18 20:03:53 +0530

ActionController :: RoutingError (Nessuna route corrisponde a [GET] "/apple-touch-icon-precomposed.png"):

Non ho dato questo link da nessuna parte e non voglio rendere questa immagine da nessuna parte. Non ho idea del perché questa risorsa si stia tentando di caricare.


4
sto ottenendo la stessa cosa esatta nel mio progetto .net. non ha nulla a che fare con il rubino. quello che non capisco è perché questo non è un errore 404 standard non trovato. ma non lo è. solo un errore di routing. ottengo: il controller per il percorso '/apple-touch-icon-precomposed.png' non è stato trovato o non implementa IController.
orazio

Risposte:


221

Suppongo che i dispositivi Apple facciano quelle richieste se il proprietario del dispositivo aggiunge il sito ad esso. Questo è l'equivalente della favicon. Per risolvere, aggiungi 2 file png 100 × 100, salvalo come apple-touch-icon-precomposed.png e apple-touch-icon.png e caricalo nella directory principale del server. Successivamente, l'errore dovrebbe essere sparito.

Ho notato molte richieste di apple-touch-icon-precomposed.png e apple-touch-icon.png nei log che hanno cercato di caricare le immagini dalla directory principale del sito. In primo luogo ho pensato che fosse una configurazione errata del tema e del plug-in mobile, ma ho scoperto in seguito che i dispositivi Apple fanno tali richieste se il proprietario del dispositivo aggiunge il sito ad esso.

Fonte: Perché i webmaster dovrebbero analizzare il loro log degli errori 404 (marzo 2012; di Martin Brinkmann)


52
Ho trovato un bell'articolo che dettaglia tutto ciò che volevo sapere (e altro): mathiasbynens.be/notes/touch-icons
Alexis

Con directory root intendi l'app / directory pubblica o directory pubblica?
Bengala,

Credo che l'autore di cui sopra significhi la directory root dei documenti web configurata, ad esempio in Apache 2.4 di solito / var / www / htdocs
Hgehlhausen

70

Se un utente dal browser Web Safari (dispositivi Apple) visita il tuo sito. Il browser tenta di recuperare l'icona del sito se non è definita nel <head>seguente ordine:

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

Per risolvere questo problema, definire un'icona per i browser Web Safari o i dispositivi Apple. Aggiungi qualcosa del genere alla sezione principale del tuo sito:

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

Se vuoi mantenere <head> pulito, carica l'icona nella directory principale del tuo sito con il nome corretto.

La dimensione dell'icona predefinita è 57px .

Puoi trovare maggiori dettagli sulla libreria per sviluppatori iOS .


Anche con questa definizione, ottengo ancora 404s per apple-touch-icon-precomposed.png
Chris Haines,

3
Si consiglia ora che la dimensione dell'icona predefinita sia 152 × 152 pixel per adattarsi agli iPad più recenti.
Andrew Lott,

2
Ricevo ancora lo stesso errore e un ulteriore errore di routing per custom_icon.png. A proposito, ottengo questi errori eseguendo rotaie in sviluppo su OSX 10.10.2 usando Safari 8.0.3 come browser.
7

8

Se hai finito con Google, questa è una semplice configurazione per evitare questo errore nei registri del web server:

Host virtuale Apache

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

Blocco server Nginx:

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

PS: è possibile che desideri aggiungere apple-touch-icon.png e favicon.icotroppo.


5

Tieni presente che ciò può accadere anche quando l'utente NON ha aggiunto il sito ai preferiti sulla schermata principale di iOS, ad esempio ogni volta che apri una pagina utilizzando Chrome per iOS, GET "/apple-touch-icon-precomposed.png" .

Ho gestito questa e altre richieste 404 non HTML nel mio ApplicationController come segue:

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

La format.allrisposta si occupa di immagini come questo file PNG (che non esiste per il mio sito).


4

C'è una gemma come quiet_assets che silenzia questi errori nei tuoi log se, come me, non volevi aggiungere questi file alla tua app Rails:

https://github.com/davidcelis/quiet_safari


Questa è la soluzione migliore ... nient'altro che frustrazioni ed enormi file di registro se non inibisci la registrazione. Le dimensioni richieste cambiano quando Apple decide ... facendoci inseguire con più versioni dello stesso favicon maledetto.
Vanboom,

4

Se non ti interessa che l'icona appaia carina su tutti i tipi di dispositivi Apple, basta aggiungere

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

al tuo config/routes.rbfile e alcuni icon.pngalla tua publicdirectory. Il reindirizzamento 404.htmlinvece di icon.pngfunziona anche


Ha funzionato bene qui.
Wellington1993,

3

Finalmente ho risolto !! È una funzionalità di Clip Web su dispositivi Mac. Se un utente desidera aggiungere il tuo sito Web in Dock o Desktop, richiede questa icona.

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.

maggiori informazioni: https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html

come risolvere ?: Aggiungi un'icona per risolvere il problema.


2

Una soluzione alternativa è semplicemente aggiungere un percorso a route.rb

Prende sostanzialmente la richiesta Apple e restituisce un 404 al client. In questo modo i file di registro non sono ingombra.

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

quindi aggiungi un metodo 'apple_touch_not_found' al tuo application_controller.rb

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

0

La stessa cosa sta succedendo per me. E sì, come ha detto @Joao Leme, sembra che sia correlato a un utente che aggiunge un sito ai preferiti sul proprio dispositivo.

Tuttavia, ho notato che anche se c'è un errore nel registro, sta accadendo dietro le quinte e l'utente non vede mai l'errore. Presumo che il dispositivo faccia una richiesta per l'icona a sfioramento specifica per la sua risoluzione (che non c'è) fino a quando non viene impostato il generale apple-touch-iconoapple-touch-icon-precomposed , se presente, altrimenti genera un piccolo screenshot della pagina corrente.

FWIW, metti le icone nella directory / public.


1
L'aggiunta delle immagini non risolve il problema. Sono in corso richieste per beni che non esistono. Ogni volta che si verifica questa richiesta, il server risponde e viene scritta una voce di registro. Questo non è efficiente.
Tass

-1

Crea semplicemente file di dimensioni zero chiamati nomi appropriati.

La richiesta verrà soddisfatta senza trasferimento di dati aggiuntivi né ulteriori righe di registrazione.


1
Si sconsiglia una risposta molto vecchia, ma la pubblicazione di un file di dimensioni pari a zero perché il Clip Web (collegamento che gli utenti possono creare nella schermata principale) apparirà in una casella quadrata senza contenuto. Anche se non mi piacciono i complicati anti-pattern creati da Apple, sarebbe meglio accumulare errori in un file di registro piuttosto che offrire agli utenti un'esperienza shxt.
Andrea Moro,

-4

Prova a cambiare collegamento da

/apple-touch-icon-precomposed.png 

per:

<%=asset_path "apple-touch-icon-precomposed.png" %>

Non ho dato questo link da nessuna parte e non voglio rendere questa immagine da nessuna parte. Non ho idea del perché questa risorsa si stia tentando di caricare.
Akash Agrawal,

Prova a trovare apple-touch-icon-precomposednella directory del tuo progetto. Penso che questo link sia incluso nel modello di layout, ma non sono sicuro.
Jju,

1
Questa è un'immagine standard richiesta da iOS; non è correlato ad alcun link nei file di progetto di una persona.
Brad Koch,

1
Questa immagine è richiesta anche dal mio droid razr, quindi non sono sicuro che sia nativo solo per i dispositivi iOS.
Tass

2
Perché Apple non può accontentarsi di favicon.ico come tutti gli altri?
Tony Payne,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.