apple-touch-icon-precomposed.png에 오류가 발생하는 이유는 무엇입니까?


247

새 rails3 프로젝트를 만들었지 만 서버 로그에 다음과 같은 로그가 여러 번 표시됩니다. 이러한 요청을받는 이유는 무엇이며 어떻게 방지 할 수 있습니까?

2012-09-18 20:03:53 +0530에서 192.168.6.2에 대해 "/apple-touch-icon-precomposed.png"GET 시작

ActionController :: RoutingError ([GET] "/apple-touch-icon-precomposed.png"와 일치하는 경로가 없음) :

이 링크를 어디에서나 제공하지 않았 으며이 이미지를 어디에서나 렌더링하고 싶지 않습니다. 이 리소스를로드하려고하는 이유는 확실하지 않습니다.


4
내 .net 프로젝트에서 똑같은 것을 얻습니다. 루비와는 아무런 관련이 없습니다. 내가 이해하지 못하는 것은 이것이 표준 404 찾을 수없는 오류가 아닌 이유입니다. 하지만 그렇지 않습니다. 라우팅 오류 일뿐입니다. 내가 얻는 : '/apple-touch-icon-precomposed.png'경로의 컨트롤러를 찾을 수 없거나 IController를 구현하지 않습니다.
horace

답변:


221

기기 소유자가 사이트를 추가하면 Apple 기기가 해당 요청을하는 것 같습니다. 이것은 파비콘과 동일합니다. 해결하려면 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 년 3 월; Martin Brinkmann)


52
나는 내가 알고 싶은 모든 것을 자세히 설명하는 멋진 기사를 찾았습니다. mathiasbynens.be/notes/touch-icons
Alexis

루트 디렉토리를 사용하면 app / public 디렉토리 또는 public 디렉토리를 의미합니까?
Bengala

위의 저자는 구성된 웹 문서 루트 디렉토리를 의미한다고 생각합니다. 예를 들어 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>깨끗하게 유지 하려면 적절한 이름으로 사이트의 루트 디렉토리에 아이콘을 업로드하십시오.

기본 아이콘 크기는 57px이다 .

iOS 개발자 라이브러리 에 대한 자세한 내용을 찾을 수 있습니다 .


심지어이 정의로, 나는 아직도 사과 터치 아이콘 - precomposed.png에 대한 404 얻을
크리스 헤인즈

3
최신 iPad를 수용하려면 기본 아이콘 크기를 152 × 152 픽셀로 설정하는 것이 좋습니다.
Andrew Lott

2
custom_icon.png에 대한 추가 라우팅 오류뿐만 아니라 여전히 동일한 오류가 발생합니다. 그건 그렇고, Safari 8.0.3을 브라우저로 사용하여 OSX 10.10.2에서 개발중인 레일에서 이러한 오류가 발생합니다.
7stud

8

인터넷 검색을 종료 한 경우 웹 서버 로그 전체에이 오류가 발생하지 않도록하는 간단한 구성입니다.

아파치 가상 호스트

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;
}

추신 : 당신 도 추가 apple-touch-icon.png하고 싶을 수도 있습니다 favicon.ico.


5

이는 사용자가 iOS 홈 화면에 사이트를 북마크하지 않은 경우에도 발생할 수 있습니다 (예 : iOS 용 Chrome을 사용하여 페이지를 열 때마다) 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 앱에 추가하지 않으려는 경우 quiet_assets 와 같은 gem 이 로그에 이러한 오류를 제거합니다.

https://github.com/davidcelis/quiet_safari


이것은 로깅을 금지하지 않으면 좌절감과 막대한 로그 파일 외에는 최상의 솔루션입니다. 애플이 결정할 때 크기가 바뀌었다 ... 같은 favicon의 더 많은 버전으로 우리를 쫓아 가게했다.
vanboom

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것도 마찬가지입니다.


여기서 잘 작동했습니다.
Wellington1993

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

또 다른 해결책은 당신에게 경로를 추가하는 것입니다 routes.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
이미지를 추가해도 문제가 해결되지 않습니다. 존재하지 않는 자산에 대한 요청이 있습니다. 이 요청이 발생할 때마다 서버가 응답하고 로그 항목이 작성됩니다. 효율적이지 않습니다.
Tass

-1

적절한 이름의 크기가 0 인 파일을 만들면됩니다.

추가 데이터 전송이나 추가 로깅 라인없이 요청이 충족됩니다.


1
아주 오래된 답변이지만 웹 클립 (사용자가 홈 화면에서 만들 수있는 링크)이 내용이없는 사각형 상자로 표시되므로 크기가 0 인 파일을 제공하는 것은 전혀 권장되지 않습니다. Apple에서 만든 복잡한 안티 패턴은 마음에 들지 않지만 사용자에게 shxt 환경을 제공하는 것보다 로그 파일에 오류를 쌓는 것이 좋습니다.
Andrea Moro

-4

에서 링크를 변경해보십시오

/apple-touch-icon-precomposed.png 

에:

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

이 링크를 어디에도 제공하지 않았 으며이 이미지를 어디에서나 렌더링하고 싶지 않습니다. 이 리소스를로드하려고하는 이유는 확실하지 않습니다.
Akash Agrawal

apple-touch-icon-precomposed프로젝트 디렉토리 를 찾으십시오 . 이 링크가 레이아웃 템플릿에 포함되어 있다고 생각하지만 확실하지 않습니다.
Jju

1
iOS에서 요청한 표준 이미지입니다. 개인 프로젝트 파일의 링크와 관련이 없습니다.
Brad Koch

1
이 이미지는 또한 내 droid razr에 의해 요청되므로 iOS 장치에만 고유한지 확실하지 않습니다.
Tass

2
왜 애플은 다른 사람들처럼 favicon.ico에 정착 할 수 없습니까?
Tony Payne
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.