Ik heb een nieuw rails3-project gemaakt, maar ik zie de volgende logs vaak in mijn serverlogs. Waarom krijg ik deze verzoeken en hoe kan ik deze vermijden?
Gestart met GET “/apple-touch-icon-precomposed.png” voor 192.168.6.2 op
2012-09-18 20:03:53 +0530ActionController::RoutingError (Geen route komt overeen met [GET]
“/apple-touch-icon-precomposed.png”):
Ik heb deze link nergens gegeven en wil deze afbeelding nergens weergeven. Ik heb geen idee waarom deze bron wordt geladen.
Antwoord 1, autoriteit 100%
Ik denk dat Apple-apparaten die verzoeken doen als de eigenaar van het apparaat de site eraan toevoegt. Dit is het equivalent van het favicon. Om dit op te lossen, voegt u 2 100-100 png-bestanden toe, slaat u deze op als apple-touch-icon-precomposed.png en apple-touch-icon.png en uploadt u deze naar de hoofdmap van de server. Daarna zou de fout verdwenen moeten zijn.
Ik zag veel verzoeken voor apple-touch-icon-precomposed.png en apple-touch-icon.png in de logs die probeerden de afbeeldingen uit de hoofdmap van de site te laden. Ik dacht eerst dat het een verkeerde configuratie was van het mobiele thema en de plug-in, maar kwam er later achter dat Apple-apparaten die verzoeken doen als de eigenaar van het apparaat de site eraan toevoegt.
Bron: Waarom webmasters hun 404-foutlogboek moeten analyseren (maart 2012; door Martin Brinkmann)
Antwoord 2, autoriteit 32%
Als een gebruiker van de Safari-webbrowser (Apple-apparaten) uw site bezoekt. De browser probeert het sitepictogram op te halen als het niet is gedefinieerd in <head>
in de volgende volgorde:
- apple-touch-icon-57×57-precomposed.png
- apple-touch-icon-57×57.png
- apple-touch-icon-precomposed.png
- apple-touch-icon.png
Om dit probleem op te lossen, definieert u een pictogram voor Safari-webbrowsers of Apple-apparaten. Voeg zoiets als dit toe aan het hoofdgedeelte van uw site:
<link rel="apple-touch-icon" href="/custom_icon.png"/>
Als u <head>
schoon wilt houden, upload dan het pictogram met de juiste naam naar de hoofdmap van uw site.
De standaardpictogramgrootte is 57px.
U kunt meer details vinden in de iOS-ontwikkelaarsbibliotheek .
Antwoord 3, autoriteit 4%
Als u hier bent geëindigd met googlen, is dit een eenvoudige configuratie om deze fout te voorkomen, vol met logbestanden van de webserver:
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-serverblokkering:
location =/apple-touch-icon-precomposed.png {
log_not_found off;
access_log off;
}
PS: Het is mogelijk dat je ook apple-touch-icon.png
en favicon.ico
wilt toevoegen.
Antwoord 4, autoriteit 2%
Houd er rekening mee dat dit zelfs kan gebeuren als de gebruiker de site NIET als bladwijzer heeft toegevoegd aan zijn iOS-startscherm. Telkens wanneer u bijvoorbeeld een pagina opent met Chrome voor iOS, wordt er een GET "/apple-touch-icon-precomposed.png"
.
Ik heb deze en andere niet-HTML 404-verzoeken als volgt in mijn ApplicationController afgehandeld:
respond_to do |format|
format.html { render :template => "error_404", :layout => "errors", :status => 404 }
format.all { render :nothing => true, :status => 404 }
end
Het antwoord format.all
zorgt voor afbeeldingen zoals dit PNG-bestand (dat niet bestaat voor mijn site).
Antwoord 5, autoriteit 2%
Ik heb het eindelijk opgelost!! Het is een Web Clip-functie op Mac-apparaten. Als een gebruiker uw website in Dock o Desktop wil toevoegen, vraagt deze om dit pictogram.
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.
hoe op te lossen?:
Voeg een pictogram toe om het probleem op te lossen.
Antwoord 6, autoriteit 2%
Als je het niet belangrijk vindt dat het pictogram er mooi uitziet op alle soorten Apple-apparaten, voeg dan gewoon
get '/:apple_touch_icon' => redirect('/icon.png'), constraints: { apple_touch_icon: /apple-touch-icon(-\d+x\d+)?(-precomposed)?\.png/ }
naar je config/routes.rb
-bestand en wat icon.png
naar je public
-directory. Omleiden naar 404.html
in plaats van icon.png
werkt ook.
Antwoord 7, autoriteit 2%
Er is een juweeltje zoals quiet_assets die deze fouten in je logbestanden het zwijgen oplegt als je, zoals ik, wilde deze bestanden niet aan je Rails-app toevoegen:
https://github.com/davidcelis/quiet_safari
Antwoord 8
Een alternatieve oplossing is om eenvoudig een route toe te voegen aan uw routes.rb
Het vangt in feite het Apple-verzoek op en geeft een 404 terug aan de client. Op deze manier zijn je logbestanden niet rommelig.
# routes.rb at the near-end
match '/:png', via: :get, controller: 'application', action: 'apple_touch_not_found', png: /apple-touch-icon.*\.png/
voeg vervolgens een methode ‘apple_touch_not_found’ toe aan uw application_controller.rb
# application_controller.rb
def apple_touch_not_found
render plain: 'apple-touch icons not found', status: 404
end
Antwoord 9
Bij mij gebeurt hetzelfde. En ja, zoals @Joao Leme zei, het lijkt erop dat het verband houdt met een gebruiker die een bladwijzer maakt voor een site op het startscherm van zijn apparaat.
Ik heb echter gemerkt dat hoewel er een fout in het logboek staat, dit achter de schermen gebeurt en dat de gebruiker de fout nooit ziet. Ik neem aan dat het apparaat een verzoek doet om het aanraakpictogram dat specifiek is voor de resolutie (die er niet is) totdat het standaard het algemene apple-touch-icon
of apple-touch-icon-precomposed
, indien aanwezig, of genereert anders een kleine schermafbeelding van de huidige pagina.
FWIW, zet de iconen in de /public directory.
Antwoord 10
Maak eenvoudig bestanden van nul met de juiste namen.
Het verzoek zal worden ingewilligd zonder extra gegevensoverdracht of verdere logregels.
Antwoord 11
Probeer de link van
. te wijzigen
/apple-touch-icon-precomposed.png
naar:
<%=asset_path "apple-touch-icon-precomposed.png" %>