webentwicklung-frage-antwort-db.com.de

Warum erhalte ich eine Fehlermeldung für Apple-touch-icon-precomposed.png

Ich habe ein neues Rails3-Projekt erstellt, sehe jedoch häufig Protokolle in meinen Serverprotokollen. Warum bekomme ich diese Anfrage und wie kann ich diese vermeiden?

GET "/Apple-touch-icon-precomposed.png" für 192.168.6.2 um .__ gestartet. 2012-09-18 20:03:53 +0530

ActionController :: RoutingError (Keine Route entspricht [GET] "/Apple-touch-icon-precomposed.png"):

Ich habe diesen Link nirgendwo angegeben und möchte dieses Bild nirgendwo rendern. Ich weiß nicht, warum versucht wird, diese Ressource zu laden.

214
Akash Agrawal

Ich denke, Apple-Geräte stellen diese Anfragen, wenn der Gerätebesitzer die Site dazu hinzufügt. Dies ist das Äquivalent des Favicons. Fügen Sie zur Auflösung 2 100 × 100 PNG-Dateien hinzu, speichern Sie sie als Apple-touch-icon-precomposed.png und Apple-touch-icon.png und laden Sie sie in das Stammverzeichnis des Servers hoch. Danach sollte der Fehler verschwunden sein.

Ich habe viele Anfragen nach Apple-touch-icon-precomposed.png und Apple-touch-icon.png in den Protokollen bemerkt, mit denen versucht wurde, die Bilder aus dem Stammverzeichnis der Website zu laden. Ich dachte zuerst, es sei eine falsche Konfiguration des mobilen Designs und des Plugins. Später erfuhr ich jedoch, dass Apple-Geräte diese Anforderungen stellen, wenn der Gerätebesitzer die Website hinzufügt.

Quelle: Warum Webmaster das 404-Fehlerprotokoll (März 2012; von Martin Brinkmann) analysieren sollten

194
Joao Leme

Wenn ein Benutzer aus dem Safari-Webbrowser (Apple-Geräte) Ihre Website besucht. Der Browser versucht, das Site-Symbol abzurufen, wenn es nicht in der folgenden Reihenfolge in <head> definiert ist:

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

Um dieses Problem zu beheben, definieren Sie entweder ein Symbol für Safari-Webbrowser oder Apple-Geräte. Fügen Sie so etwas zum Kopfbereich Ihrer Website hinzu:

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

Wenn Sie <head> sauber halten möchten, laden Sie das Symbol mit dem richtigen Namen in das Stammverzeichnis Ihrer Site hoch. 

Die Standardsymbolgröße beträgt 57px.

Weitere Informationen finden Sie in der iOS Developer Library

58
Anand Kumar

Beachten Sie, dass dies auch dann der Fall sein kann, wenn der Benutzer die Site NICHT auf dem iOS-Startbildschirm mit einem Lesezeichen versehen hat. Wenn Sie beispielsweise eine Seite mit Chrome für iOS öffnen, wird GET "/Apple-touch-icon-precomposed.png" ausgeführt.

Ich habe diese und andere Nicht-HTML-404-Anforderungen in meinem ApplicationController wie folgt behandelt:

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

Die format.all-Antwort kümmert sich um Bilder wie diese PNG-Datei (die für meine Site nicht vorhanden ist).

5
Tinynumbers

Wenn Sie hier nicht mehr googeln, ist dies eine einfache Konfiguration, um zu verhindern, dass dieser Fehler die Webserver-Protokolle voll belegt:

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>

Nginx-Serverblock:

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

PS: Möglicherweise möchten Sie auch Apple-touch-icon.png und favicon.ico hinzufügen.

4

Es gibt einen Edelstein wie quiet_assets , der diese Fehler in Ihren Protokollen zum Schweigen bringt, wenn Sie diese Dateien nicht Ihrer Rails-App hinzufügen möchten:

https://github.com/davidcelis/quiet_safari

3
davidcelis

Wenn Sie nicht möchten, dass das Symbol auf allen Arten von Apple) - Geräten hübsch aussieht, fügen Sie einfach Folgendes hinzu

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

zu deinem config/routes.rb Datei und einige icon.png in Ihr public Verzeichnis. Weiterleiten an 404.html anstatt icon.png funktioniert auch.

2

Endlich gelöst !! Es ist eine Web Clip - Funktion auf Mac-Geräten. Wenn ein Benutzer Ihre Website in Dock o Desktop hinzufügen möchte, fordert er dieses Symbol an.

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.

Weitere Informationen:https://developer.Apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html

wie zu lösen ?: Fügen Sie ein Symbol hinzu, um das Problem zu lösen.

2
molavec

Eine alternative Lösung ist, einfach eine Route zu Ihrer routes.rb hinzuzufügen.

Es fängt im Wesentlichen die Apple-Anfrage und gibt eine 404 an den Client zurück. Auf diese Weise werden Ihre Protokolldateien nicht überladen.

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

fügen Sie dann eine Methode "Apple_touch_not_found" zu Ihrer application_controller.rb hinzu.

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

Gleiches passiert für mich. Und ja, wie @Joao Leme sagte, scheint es sich um einen Benutzer zu handeln, der eine Site auf ihrem Homescreen des Geräts markiert.

Mir ist jedoch aufgefallen, dass ein Fehler im Protokoll auftritt, dies jedoch im Hintergrund geschieht und der Benutzer den Fehler nie sieht. Ich gehe davon aus, dass das Gerät das Touch-Icon für seine Auflösung anfordert (was nicht vorhanden ist), bis der Standardwert Apple-touch-icon oder Apple-touch-icon-precomposed (falls vorhanden) vorgegeben ist. Andernfalls wird ein kleiner Screenshot der aktuellen Seite erstellt.

FWIW, setzen Sie die Symbole in das Verzeichnis/public.

0
Brian

Erstellen Sie einfach Dateien in der Größe Null, die als geeignete Namen bezeichnet werden.

Die Anforderung wird ohne zusätzliche Datenübertragung oder weitere Protokollierungszeilen erfüllt.

0
Dave G