IT story

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

hot-time 2020. 4. 16. 08:29
반응형

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


새 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"와 일치하는 경로가 없음) :

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


기기 소유자가 사이트를 추가하면 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)


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="/custom_icon.png"/>

<head>깨끗하게 유지 하려면 적절한 이름으로 사이트의 루트 디렉토리에 아이콘을 업로드하십시오.

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

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


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

아파치 가상 호스트

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.


이는 사용자가 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 파일로 이미지를 처리합니다.


나와 같이 이러한 파일을 Rails 앱에 추가하지 않으려는 경우 quiet_assets 와 같은 보석 이 로그에 이러한 오류를 제거합니다.

https://github.com/davidcelis/quiet_safari


나는 마침내 해결했다!! 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

해결 방법? : 문제를 해결하기 위해 아이콘을 추가하십시오.


모든 종류의 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.


또 다른 해결책은 당신에게 경로를 추가하는 것입니다 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

나도 같은 일이 일어나고 있습니다. 그리고 @Joao Leme이 말했듯이, 사용자가 자신의 장치 홈 화면에 사이트를 북마크하는 것과 관련이있는 것 같습니다.

그러나 로그에 오류가 있어도 문제가 발생하고 사용자가 오류를 보지 못합니다. 나는 장치가 일반 apple-touch-icon또는 apple-touch-icon-precomposed존재하는 경우 기본값으로 설정 하거나 현재 페이지의 작은 스크린 샷을 생성 할 때까지 터치 아이콘에 대한 해상도 (해당되지 않음)에 대한 요청을한다고 가정합니다 .

FWIW에서 아이콘을 / public 디렉토리에 넣으십시오.


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

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


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

/apple-touch-icon-precomposed.png 

에:

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

참고 URL : https://stackoverflow.com/questions/12480497/why-am-i-getting-error-for-apple-touch-icon-precomposed-png

반응형