Tại sao tôi nhận được lỗi cho apple-touch-icon-preomposes.png


247

Tôi đã tạo một dự án rails3 mới nhưng tôi thấy các bản ghi sau nhiều lần trong nhật ký máy chủ của tôi. Tại sao tôi nhận được những yêu cầu này và làm cách nào để tránh những yêu cầu này?

Bắt đầu NHẬN "/apple-touch-icon-precomposes.png" cho 192.168.6.2 vào 2012-09-18 20:03:53 +0530

ActionControll :: RoutingError (Không có tuyến nào khớp với [GET] "/apple-touch-icon-precomposes.png"):

Tôi chưa đưa ra liên kết này ở bất cứ đâu và không muốn hiển thị hình ảnh này ở bất cứ đâu. Tôi không biết tại sao tài nguyên này đang được cố gắng tải.


4
Tôi đang nhận được điều tương tự chính xác trong dự án .net của tôi. không có gì để làm với ruby. Điều tôi không hiểu là tại sao đây không phải là lỗi 404 không tìm thấy. Nhưng nó không phải là. chỉ là một lỗi định tuyến. i get: Bộ điều khiển cho đường dẫn '/apple-touch-icon-precomposes.png' không được tìm thấy hoặc không triển khai IControll.
horace

Câu trả lời:


221

Tôi đoán các thiết bị apple thực hiện các yêu cầu đó nếu chủ sở hữu thiết bị thêm trang web vào đó. Đây là tương đương với favicon. Để giải quyết, hãy thêm 2 tệp 100 × 100 png, lưu nó dưới dạng apple-touch-icon-preomposes.png và apple-touch-icon.png và tải nó lên thư mục gốc của máy chủ. Sau đó, lỗi sẽ biến mất.

Tôi nhận thấy rất nhiều yêu cầu cho apple-touch-icon-preomposes.png và apple-touch-icon.png trong nhật ký đã cố tải hình ảnh từ thư mục gốc của trang web. Trước tiên tôi nghĩ rằng đó là cấu hình sai của chủ đề và plugin dành cho thiết bị di động, nhưng sau đó phát hiện ra rằng các thiết bị của Apple thực hiện các yêu cầu đó nếu chủ sở hữu thiết bị thêm trang web vào đó.

Nguồn: Tại sao Quản trị viên web nên phân tích Nhật ký lỗi 404 của họ (Mar 2012; bởi Martin Brinkmann)


52
Tôi tìm thấy một bài viết hay, chi tiết mọi thứ tôi muốn biết (và hơn thế nữa): mathiasbynens.be/notes/touch-icons
Alexis

Với thư mục gốc, bạn có nghĩa là thư mục ứng dụng / công cộng hoặc thư mục công cộng?
Bengala

Tôi tin rằng tác giả ở trên có nghĩa là thư mục gốc tài liệu web được định cấu hình, ví dụ như trong Apache 2.4, nó thường là / var / www / htdocs
Hgehlhausen

70

Nếu người dùng từ trình duyệt Safari Web (thiết bị Apple) truy cập trang web của bạn. Trình duyệt cố gắng tìm nạp biểu tượng trang web nếu nó không được xác định <head>theo thứ tự sau:

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

Để giải quyết vấn đề này, hãy xác định một biểu tượng cho trình duyệt web safari hoặc thiết bị apple. Thêm một cái gì đó như thế này vào phần đầu của trang web của bạn:

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

Nếu bạn muốn giữ <head>sạch thì hãy tải biểu tượng lên thư mục gốc của trang web của bạn với tên thích hợp.

Các kích thước biểu tượng mặc định là 57px .

Bạn có thể tìm thêm chi tiết về thư viện nhà phát triển iOS .


Ngay cả với định nghĩa này, tôi vẫn nhận được 404s cho apple-touch-icon-preomposes.png
Chris Haines

3
Hiện tại, chúng tôi khuyên rằng kích thước biểu tượng mặc định là 152 × 152 pixel để phù hợp với iPad mới hơn.
Andrew Lott

2
Tôi vẫn nhận được cùng một lỗi, cũng như một lỗi định tuyến bổ sung cho custom_icon.png. Nhân tiện, tôi nhận được các lỗi này khi chạy đường ray trong quá trình phát triển trên OSX 10.10.2 bằng Safari 8.0.3 làm trình duyệt.
7

8

Nếu bạn đã kết thúc ở đây googling, đây là một cấu hình đơn giản để ngăn lỗi này đầy đủ nhật ký máy chủ web:

Máy chủ ảo Apache

Redirect 404 /apple-touch-icon-precomposed.png
<Location /apple-touch-icon-precomposed.png>
    ErrorDocument 404 "apple-touch-icon-precomposed does not exist"
</Location>

Khối máy chủ Nginx:

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

PS: Có thể bạn muốn thêm apple-touch-icon.pngfavicon.icoquá.


5

Lưu ý rằng điều này có thể xảy ra ngay cả khi người dùng KHÔNG đánh dấu trang web vào màn hình chính iOS của họ - ví dụ: bất cứ khi nào bạn mở một trang bằng Chrome cho iOS, thì nó sẽ xảy ra GET "/apple-touch-icon-precomposed.png".

Tôi đã xử lý yêu cầu này và các yêu cầu 404 không phải HTML khác trong ApplicationContoder của mình như sau:

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

Các format.allphản ứng sẽ chăm sóc của hình ảnh như PNG này (mà không tồn tại cho trang web của tôi).


4

Có một viên ngọc như quiet_assets sẽ tắt các lỗi này trong nhật ký của bạn nếu như tôi, bạn không muốn phải thêm các tệp này vào ứng dụng Rails của mình:

https://github.com/davidcelis/quiet_safari


Đây là giải pháp tốt nhất ... không có gì ngoài sự thất vọng và các tệp nhật ký khổng lồ nếu bạn không ngăn chặn việc đăng nhập. Các kích thước được yêu cầu thay đổi khi Apple quyết định ... giữ cho chúng tôi theo đuổi với nhiều phiên bản của favicon tương tự.
vanboom

4

Nếu bạn không quan tâm đến biểu tượng trông đẹp mắt trên tất cả các loại thiết bị của Apple, chỉ cần thêm

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

vào config/routes.rbtập tin của bạn và một số icon.pngvào publicthư mục của bạn . Chuyển hướng đến 404.htmlthay vì icon.pnglàm việc quá.


Làm việc tốt ở đây.
Wellington1993

3

Cuối cùng tôi cũng giải quyết được !! Đây là một tính năng Web Clip trên thiết bị Mac. Nếu người dùng muốn thêm trang web của bạn vào Dock o Desktop, nó sẽ yêu cầu biểu tượng này.

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.

thông tin thêm: https://developer.apple.com/l Library / content / document / AppAppluggest / Reference / SeariWebContent /ConfWeburingAppluggest/ConfiguringWebAppluggest.html

Làm thế nào để giải quyết?: Thêm một biểu tượng để giải quyết vấn đề.


2

Một giải pháp thay thế là chỉ cần thêm một tuyến đường vào tuyến đường của bạn.rb

Về cơ bản, nó bắt được yêu cầu của Apple và trả lại 404 cho khách hàng. Bằng cách này, tệp nhật ký của bạn không bị lộn xộn.

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

sau đó thêm một phương thức 'apple_touch_not_found' vào application_controll.rb của bạn

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

0

Điều tương tự đang xảy ra với tôi. Và vâng, như @Joao Leme nói, có vẻ như nó có liên quan đến việc người dùng đánh dấu một trang web vào màn hình chính của thiết bị của họ.

Tuy nhiên, tôi nhận thấy rằng mặc dù có lỗi trong nhật ký, nhưng nó xảy ra đằng sau hậu trường và người dùng không bao giờ thấy lỗi. Tôi giả sử thiết bị đưa ra yêu cầu biểu tượng cảm ứng cụ thể cho độ phân giải của thiết bị (không có ở đó) cho đến khi mặc định là chung apple-touch-iconhoặcapple-touch-icon-precomposed , nếu có, nếu không, sẽ tạo một ảnh chụp màn hình nhỏ của trang hiện tại.

FWIW, đặt các biểu tượng trong thư mục / công khai.


1
Thêm hình ảnh không giải quyết vấn đề. Yêu cầu đang được thực hiện cho các tài sản không tồn tại. Mỗi khi yêu cầu này xảy ra, máy chủ sẽ phản hồi và một mục nhật ký được viết. Điều đó không hiệu quả.
Tass

-1

Đơn giản chỉ cần tạo các tệp có kích thước bằng không được gọi là tên thích hợp.

Yêu cầu sẽ được thỏa mãn mà không cần truyền thêm dữ liệu cũng như các dòng ghi nhật ký.


1
Câu trả lời rất cũ, nhưng việc cung cấp tệp có kích thước bằng 0 hoàn toàn không được khuyến nghị vì Web Clip (liên kết mà người dùng có thể tạo trên màn hình chính của họ) sẽ xuất hiện một ô vuông không có nội dung. Mặc dù tôi không thích các kiểu chống phức tạp do Apple tạo ra, nhưng sẽ tốt hơn nếu chồng các lỗi trong tệp nhật ký hơn là cung cấp trải nghiệm shxt cho người dùng nếu có.
Andrea Moro

-4

Cố gắng thay đổi liên kết từ

/apple-touch-icon-precomposed.png 

đến:

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

Tôi chưa đưa ra liên kết này ở bất cứ đâu và không muốn hiển thị hình ảnh này ở bất cứ đâu. Tôi không biết tại sao tài nguyên này đang được cố gắng tải.
Akash Agrawal

Cố gắng tìm apple-touch-icon-precomposedtrong thư mục dự án của bạn. Tôi nghĩ rằng liên kết này bao gồm trong mẫu bố trí, nhưng tôi không phải là shure.
Jju

1
Đây là hình ảnh tiêu chuẩn do iOS yêu cầu; nó không liên quan đến bất kỳ liên kết nào trong các tệp dự án của một người.
Brad Koch

1
Hình ảnh này cũng được yêu cầu bởi droid razr của tôi, vì vậy tôi không chắc nó chỉ có nguồn gốc từ các thiết bị iOS.
Tass

2
Tại sao Apple không thể giải quyết favicon.ico như mọi người khác?
Tony Payne
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.