Ich habe ein neues Rails3-Projekt erstellt, sehe jedoch häufig folgende Protokolle in meinen Serverprotokollen. Warum bekomme ich diese Anfrage und wie kann ich diese vermeiden?
Startete GET "/apple-touch-icon-precomposed.png" für 192.168.6.2 am 2012-09-18 20:03:53 +0530
ActionController :: RoutingError (Keine Route stimmt mit [GET] "/apple-touch-icon-precomposed.png" überein):
Ich habe diesen Link nirgendwo angegeben und möchte dieses Bild nirgendwo rendern. Ich habe keine Ahnung, warum versucht wird, diese Ressource zu laden.
apple-touch-icon
Akash Agrawal
quelle
quelle
Antworten:
Ich denke, Apple-Geräte stellen diese Anfragen, wenn der Gerätebesitzer die Site hinzufügt. Dies entspricht dem Favicon. Fügen Sie zum Auflösen 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 behoben sein.
Quelle: Warum Webmaster ihr 404-Fehlerprotokoll analysieren sollten (März 2012; von Martin Brinkmann)
quelle
Wenn ein Benutzer des Safari-Webbrowsers (Apple-Geräte) Ihre Website besucht. Der Browser versucht, das Site-Symbol abzurufen, wenn es nicht
<head>
in der folgenden Reihenfolge definiert ist:Um dieses Problem zu beheben, definieren Sie entweder ein Symbol für Safari-Webbrowser oder Apple-Geräte. Fügen Sie dem Kopfbereich Ihrer Website Folgendes hinzu:
Wenn Sie
<head>
sauber bleiben möchten, laden Sie das Symbol mit dem richtigen Namen in das Stammverzeichnis Ihrer Website hoch.Die Standardsymbolgröße beträgt 57px .
Weitere Informationen finden Sie in der iOS-Entwicklerbibliothek .
quelle
Wenn Sie hier gegoogelt haben, ist dies eine einfache Konfiguration, um zu verhindern, dass dieser Fehler die Webserver-Protokolle voll macht:
Apache virtualhost
Nginx-Serverblock:
PS: Ist es möglich, dass Sie hinzufügen möchten
apple-touch-icon.png
undfavicon.ico
auch.quelle
Beachten Sie, dass dies auch dann passieren kann, wenn der Benutzer die Site NICHT auf seinem iOS-Startbildschirm mit einem Lesezeichen versehen hat. Wenn Sie beispielsweise eine Seite mit Chrome für iOS öffnen, wird dies a
GET "/apple-touch-icon-precomposed.png"
.Ich habe diese und andere Nicht-HTML 404-Anforderungen in meinem ApplicationController wie folgt behandelt:
Die
format.all
Antwort kümmert sich um Bilder wie diese PNG-Datei (die für meine Site nicht existiert).quelle
Es gibt ein Juwel wie quiet_assets , das diese Fehler in Ihren Protokollen zum Schweigen , wenn Sie wie ich diese Dateien nicht zu Ihrer Rails-App hinzufügen möchten:
https://github.com/davidcelis/quiet_safari
quelle
Wenn Sie sich nicht dafür interessieren, dass das Symbol auf allen Apple-Geräten hübsch aussieht, fügen Sie es einfach hinzu
get '/:apple_touch_icon' => redirect('/icon.png'), constraints: { apple_touch_icon: /apple-touch-icon(-\d+x\d+)?(-precomposed)?\.png/ }
zu Ihrer
config/routes.rb
Datei und einigeicon.png
zu Ihrempublic
Verzeichnis. Weiterleiten an404.html
statticon.png
funktioniert auch.quelle
Ich habe es endlich gelöst !! Es ist eine Webclip- Funktion auf Mac-Geräten. Wenn ein Benutzer Ihre Website in Dock o Desktop hinzufügen möchte, fordert er dieses Symbol an.
Weitere Informationen: https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html
Wie löse ich?: Fügen Sie ein Symbol hinzu, um das Problem zu lösen.
quelle
Eine alternative Lösung besteht darin, Ihrer route.rb einfach eine Route hinzuzufügen
Grundsätzlich wird die Apple-Anfrage abgefangen und ein 404 an den Client zurückgesendet. Auf diese Weise werden Ihre Protokolldateien nicht überladen.
Fügen Sie dann Ihrer application_controller.rb eine Methode 'apple_touch_not_found' hinzu
quelle
Das gleiche passiert für mich. Und ja, wie @Joao Leme sagte, scheint es damit zu tun zu haben, dass ein Benutzer eine Site mit einem Lesezeichen für den Homescreen seines Geräts erstellt.
Ich habe jedoch festgestellt, dass ein Fehler im Protokoll hinter den Kulissen auftritt und der Benutzer den Fehler nie sieht. Ich gehe davon aus, dass das Gerät eine Anfrage für das Touch-Symbol stellt, das für seine Auflösung spezifisch ist (was nicht vorhanden ist), bis standardmäßig das allgemeine
apple-touch-icon
oderapple-touch-icon-precomposed
, falls vorhanden, oder ein kleiner Screenshot der aktuellen Seite erstellt wird.FWIW, legen Sie die Symbole im Verzeichnis / public ab.
quelle
Erstellen Sie einfach Dateien mit der Größe Null, die als entsprechende Namen bezeichnet werden.
Die Anfrage wird ohne zusätzliche Datenübertragung oder weitere Protokollierungszeilen erfüllt.
quelle
Versuchen Sie, den Link von zu ändern
zu:
quelle
apple-touch-icon-precomposed
in Ihrem Projektverzeichnis zu finden . Ich denke, dieser Link ist in der Layoutvorlage enthalten, aber ich bin nicht sicher.