Utworzyłem nowy projekt rails3, ale w dziennikach serwera wiele razy widzę następujące dzienniki. Dlaczego otrzymuję te prośby i jak mogę ich uniknąć?
Rozpoczęto GET „/apple-touch-icon-precomposed.png” dla 192.168.6.2 at 18.09.2012 20:03:53 +0530
ActionController :: RoutingError (Brak trasy pasuje [GET] „/apple-touch-icon-precomposed.png”):
Nigdzie nie podałem tego linku i nigdzie nie chcę renderować tego obrazu. Nie mam pojęcia, dlaczego próbuje się załadować ten zasób.
apple-touch-icon
Akash Agrawal
źródło
źródło
Odpowiedzi:
Sądzę, że urządzenia Apple wysyłają te żądania, jeśli właściciel urządzenia doda do niej witrynę. Jest to odpowiednik favikonu. Aby rozwiązać problem, dodaj 2 100 × 100 plików png, zapisz go jako apple-touch-icon-precomposed.png i apple-touch-icon.png i prześlij do katalogu głównego serwera. Następnie błąd powinien zniknąć.
Źródło: Dlaczego webmasterzy powinni analizować swój dziennik błędów 404 (marzec 2012; Martin Brinkmann)
źródło
Jeśli użytkownik przeglądarki Safari (urządzenia Apple) odwiedzi Twoją witrynę. Przeglądarka próbuje pobrać ikonę witryny, jeśli nie jest zdefiniowana w
<head>
następującej kolejności:Aby rozwiązać ten problem, zdefiniuj ikonę przeglądarki Safari lub urządzenia Apple. Dodaj coś takiego do sekcji nagłówka swojej witryny:
Jeśli chcesz zachować
<head>
czystość, prześlij ikonę do katalogu głównego witryny o prawidłowej nazwie.Domyślny rozmiar ikon jest 57px .
Możesz znaleźć więcej informacji na temat biblioteki programistów iOS .
źródło
Jeśli zakończyłeś tutaj googling, jest to prosta konfiguracja, aby zapobiec temu błędowi zapełnienia dzienników serwera WWW:
Wirtualny host Apache
Blok serwera Nginx:
PS: Czy to możliwe chcesz dodać
apple-touch-icon.png
ifavicon.ico
zbyt.źródło
Pamiętaj, że może się to zdarzyć nawet wtedy, gdy użytkownik NIE oznaczył strony zakładką do ekranu głównego iOS - na przykład za każdym razem, gdy otwierasz stronę za pomocą Chrome na iOS, robi to
GET "/apple-touch-icon-precomposed.png"
.W moim ApplicationController obsłużyłem to i inne żądania w formacie innym niż HTML 404 w następujący sposób:
format.all
Odpowiedź dba obrazów takich jak ten PNG (który nie istnieje na moim miejscu).źródło
Jest taki klejnot jak quiet_assets który te błędy w twoich logach, jeśli tak jak ja nie chciałbyś dodawać tych plików do swojej aplikacji Rails:
https://github.com/davidcelis/quiet_safari
źródło
Jeśli nie zależy Ci na tym, aby ikona wyglądała ładnie na wszelkiego rodzaju urządzeniach Apple, po prostu dodaj
get '/:apple_touch_icon' => redirect('/icon.png'), constraints: { apple_touch_icon: /apple-touch-icon(-\d+x\d+)?(-precomposed)?\.png/ }
do twojego
config/routes.rb
pliku i trochęicon.png
do twojegopublic
katalogu. Przekierowanie do404.html
zamiasticon.png
działa również.źródło
W końcu rozwiązałem !! Jest to funkcja Web Clip na urządzeniach Mac. Jeśli użytkownik chce dodać witrynę w Dock o Desktop, żąda tej ikony.
więcej informacji: https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html
jak rozwiązać ?: Dodaj ikonę, aby rozwiązać problem.
źródło
Alternatywnym rozwiązaniem jest po prostu dodanie trasy do trasy.rb
Zasadniczo łapie żądanie Apple i renderuje 404 z powrotem do klienta. W ten sposób twoje pliki dziennika nie są zagracone.
następnie dodaj metodę „apple_touch_not_found” do swojego application_controller.rb
źródło
To samo dzieje się dla mnie. I tak, jak powiedział @Joao Leme, wydaje się, że jest to związane z zakładką użytkownika do strony głównej urządzenia.
Zauważyłem jednak, że pomimo błędu w dzienniku, dzieje się to za kulisami, a użytkownik nigdy nie widzi błędu. Zakładam, że urządzenie wysyła prośbę o ikonę dotykową specyficzną dla jego rozdzielczości (której nie ma), dopóki domyślnie nie zostanie ustawiona ogólna
apple-touch-icon
lubapple-touch-icon-precomposed
, jeśli jest obecny, albo wygeneruje mały zrzut ekranu bieżącej strony.FWIW, umieść ikony w katalogu / public.
źródło
Po prostu utwórz pliki o zerowej wielkości, zwane odpowiednimi nazwami.
Żądanie zostanie spełnione bez dodatkowego transferu danych ani dalszych linii logowania.
źródło
Spróbuj zmienić link z
do:
źródło
apple-touch-icon-precomposed
w swoim katalogu projektu. Myślę, że ten link jest zawarty w szablonie układu, ale nie jestem pewien.