Чому я отримую помилку для apple-touch-icon-precomposed.png


247

Я створив новий проект rails3, але в своїх журналах сервера я багато разів бачу наступні журнали. Чому я отримую ці запити і як я можу їх уникнути?

Почав GET "/apple-touch-icon-precomposed.png" за 192.168.6.2 в 2012-09-18 20:03:53 +0530

ActionController :: RoutingError (немає відповідності маршруту [GET] "/apple-touch-icon-precomposed.png"):

Я ніде не посилав це посилання і нікуди не хочу візуалізувати це зображення. Мені незрозуміло, чому цей ресурс намагається завантажувати.


4
У моєму проекті .net я отримую те саме. не має нічого спільного з рубіном. що я не розумію, це чому це не стандартна помилка 404 не знайдена. але це не так. просто помилка маршрутизації. я отримую: Контролер для шляху '/apple-touch-icon-precomposed.png' не знайдено або не реалізує IController.
Горацій

Відповіді:


221

Я думаю, що яблучні пристрої роблять ці запити, якщо власник пристрою додає на нього сайт. Це еквівалент фавікону. Щоб вирішити проблему, додайте 2 100 × 100 png-файлів, збережіть їх як apple-touch-icon-precomposed.png та apple-touch-icon.png та завантажте їх у кореневий каталог сервера. Після цього помилки не повинно бути.

Я помітив безліч запитів на apple-touch-icon-precomposed.png та apple-touch-icon.png у журналах, які намагалися завантажити зображення з кореневого каталогу сайту. Я спершу подумав, що це неправильна конфігурація теми для мобільних пристроїв та плагінів, але пізніше з’ясував, що пристрої Apple роблять ці запити, якщо власник пристрою додає на нього сайт.

Джерело: Чому веб-майстри повинні аналізувати свій журнал помилок 404 (березень 2012; Мартін Брінкманн)


52
Я знайшов приємну статтю, в якій детально описується
Alexis

Під кореневим каталогом ви маєте на увазі додаток / публічний каталог чи загальнодоступний каталог?
Бенгала

Я вважаю, що вищевказаний автор означає налаштований каталог веб-документів, наприклад, в Apache 2.4, як правило, / var / www / htdocs
Hgehlhausen

70

Якщо користувач із веб-браузера Safari (пристрої Apple) відвідує ваш сайт. Браузер намагається отримати піктограму сайту, якщо вона не визначена у <head>такому порядку:

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

Щоб вирішити цю проблему, або визначте піктограму веб-переглядачів safari або пристроїв Apple. Додайте щось подібне до головного розділу свого сайту:

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

Якщо ви хочете зберегти <head>чистоту, завантажте піктограму в корінний каталог вашого сайту з власним ім’ям.

За замовчуванням розмір піктограми - 57 пікселів .

Більш детальну інформацію можна знайти в бібліотеці розробників iOS .


Навіть при такому визначенні я все одно отримую 404s для apple-touch-icon-precomposed.png
Chris Haines

3
Тепер рекомендується розмір піктограми за замовчуванням 152 × 152 пікселів, щоб вмістити нові iPad.
Ендрю Лотт

2
Я все одно отримую ту саму помилку, а також додаткову помилку маршрутизації для custom_icon.png. До речі, я отримую ці помилки при запуску рейок при розробці на OSX 10.10.2, використовуючи Safari 8.0.3 в якості браузера.
7stud

8

Якщо ви закінчили тут googling, це проста конфігурація, щоб запобігти цій помилці заповнення журналів веб-сервера:

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:

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

PS: Чи можливо ви хочете додати apple-touch-icon.pngі favicon.icoтеж.


5

Зауважте, що це може статися навіть тоді, коли користувач НЕ розмістив закладки на своєму домашньому екрані iOS - наприклад, кожного разу, коли ви відкриваєте сторінку за допомогою Chrome для iOS, це робить GET "/apple-touch-icon-precomposed.png" .

У моєму ApplicationController я обробляв цей та інші запити, що не входять до HTML 404:

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

format.allВідповідь бере на себе образи , такі , як цей PNG файл (який не існує для мого сайту).


4

Є дорогоцінний камінь, як тихий_ассети який заглушить ці помилки у ваших журналах, якщо, як і я, вам не захочеться додавати ці файли до програми Rails:

https://github.com/davidcelis/quiet_safari


Це найкраще рішення ... нічого, крім розчарувань та величезних файлів журналів, якщо ви не заважаєте вести журнал. Запрошені розміри змінюються, коли Apple вирішить ... змушуючи нас переслідувати більше версій того самого проклятого фавікону.
ванбум

4

Якщо вам не байдуже, що піктограма виглядає досить на всіх пристроях Apple, просто додайте

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

у ваш config/routes.rbфайл, а деякі icon.pngу ваш publicкаталог. Перенаправлення на, 404.htmlа не icon.pngпрацює теж.


Тут добре працювали.
Веллінгтон1993

3

Я нарешті вирішив !! Це функція веб-кліпу на пристроях Mac. Якщо користувач хоче додати ваш веб-сайт у Dock o Desktop, він вимагає цього значка.

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.

додаткові відомості: https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html

як вирішити?: Додайте значок для вирішення проблеми.


2

Альтернативне рішення - просто додати маршрут до маршруту.rb

В основному він вловлює запит Apple і повертає клієнту 404. Таким чином ваші файли журналів не захаращуються.

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

потім додайте метод "apple_touch_not_found" у свою програму application_controller.rb

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

0

Те саме відбувається і в мене. І так, як заявив @Joao Leme, схоже, це пов’язано з тим, що користувач робить закладки на сайт на головний екран свого пристрою.

Однак я помітив, що, хоча в журналі є помилка, це відбувається за кадром, і користувач ніколи не бачить помилки. Я припускаю, що пристрій надсилає запит на сенсорну піктограму, специфічну для її роздільної здатності (якої немає), до дефолту до загальної apple-touch-iconчиapple-touch-icon-precomposed , якщо він присутній, інакше генерується невеликий скріншот поточної сторінки.

FWIW, покладіть значки в каталог / public.


1
Додавання зображень не вирішує проблему. Надсилаються запити щодо активів, яких не існує. Щоразу, коли цей запит трапляється, сервер відповідає і записується запис у журнал. Це не ефективно.
Тасс

-1

Просто створіть файли нульового розміру, названі відповідні імена.

Запит буде задоволено без додаткової передачі даних та подальших ліній реєстрації даних.


1
Дуже стара відповідь, але розміщення файлу з нульовим розміром взагалі не рекомендується, оскільки веб-кліп (посилання, яку користувачі можуть створити на головному екрані) з'явиться у квадраті без вмісту. Хоча мені не подобаються складні анти-шаблони, створені Apple, було б краще накопичувати помилки у файлі журналу, ніж пропонувати користувачам shxt досвід, якщо такі є.
Андреа Моро

-4

Спробуйте змінити посилання на

/apple-touch-icon-precomposed.png 

до:

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

Я ніде не посилав це посилання і нікуди не хочу візуалізувати це зображення. Мені незрозуміло, чому цей ресурс намагається завантажувати.
Акаш Агравал

Спробуйте знайти apple-touch-icon-precomposedу вашому каталозі проекту. Я думаю, що це посилання включено в шаблон макета, але я не є shure.
Jju

1
Це стандартне зображення, запитуване iOS; це не пов’язано з будь-якими посиланнями у файлах проекту людини.
Бред Кох

1
Це зображення також запитується моїм дроїдом, тому я не впевнений, що він є лише для пристроїв iOS.
Тасс

2
Чому Apple не може просто влаштуватися на favicon.ico, як і всі інші?
Тоні Пейн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.