เหตุใดฉันจึงได้รับข้อผิดพลาดสำหรับ 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
horace

คำตอบ:


221

ฉันเดาว่าอุปกรณ์แอปเปิ้ลทำคำขอเหล่านั้นถ้าเจ้าของอุปกรณ์เพิ่มไซต์ลงไป นี่คือ favicon ที่เทียบเท่ากัน หากต้องการแก้ไขให้เพิ่มไฟล์ 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; โดย Martin Brinkmann)


52
ฉันพบบทความที่ดีที่ให้รายละเอียดทุกอย่างที่ฉันอยากรู้ (และอื่น ๆ ): mathiasbynens.be/notes/touch-icons
Alexis

ด้วยรูทไดเร็กทอรีคุณหมายถึงแอพ / ไดเรกทอรีสาธารณะหรือไดเรกทอรีสาธารณะ
Bengala

ผมเชื่อว่าผู้เขียนข้างต้นหมายถึงการกำหนดค่าเว็บไดเรกทอรีเอกสารรากเช่นใน Apache 2.4 ก็มักจะ/ var / www / htdocs
Hgehlhausen

70

หากผู้ใช้จากเว็บเบราว์เซอร์ Safari (อุปกรณ์ Apple) เยี่ยมชมเว็บไซต์ของคุณ เบราว์เซอร์พยายามดึงไอคอนของไซต์หากไม่ได้กำหนดไว้ใน<head>ลำดับต่อไปนี้:

  1. แอปเปิ้ลสัมผัสไอคอน 57x57-precomposed.png
  2. แอปเปิ้ลสัมผัสไอคอน 57x57.png
  3. แอปเปิ้ลสัมผัสไอคอน precomposed.png
  4. แอปเปิ้ลสัมผัส icon.png

หากต้องการแก้ไขปัญหานี้ให้กำหนดไอคอนสำหรับเว็บเบราเซอร์ซาฟารีหรืออุปกรณ์ Apple เพิ่มสิ่งนี้ในส่วนหัวของเว็บไซต์ของคุณ:

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

หากคุณต้องการรักษาความ<head>สะอาดให้อัปโหลดไอคอนไปยังรูตของเว็บไซต์ของคุณด้วยชื่อที่ถูกต้อง

ขนาดไอคอนเริ่มต้นเป็น 57px

คุณสามารถค้นหารายละเอียดเพิ่มเติมในห้องสมุดนักพัฒนา iOS


แม้จะมีคำจำกัดความนี้ฉันยังได้รับ 404s สำหรับ apple-touch-icon-precomposed.png
Chris Haines

3
ขอแนะนำให้ใช้ไอคอนเริ่มต้นขนาด 152 × 152 พิกเซลเพื่อรองรับ iPads รุ่นใหม่
Andrew Lott

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"เช่นนั้น

ฉันจัดการสิ่งนี้และคำขออื่นที่ไม่ใช่ HTML 404 ใน ApplicationController ของฉันดังต่อไปนี้:

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

มีอัญมณีอย่างquiet_assetsที่จะเงียบข้อผิดพลาดเหล่านี้ในบันทึกของคุณถ้าอย่างฉันคุณไม่ต้องการเพิ่มไฟล์เหล่านี้ไปยังแอพ Rails ของคุณ:

https://github.com/davidcelis/quiet_safari


นี่คือทางออกที่ดีที่สุด ... ไม่มีอะไรนอกจากความผิดหวังและไฟล์บันทึกขนาดใหญ่หากคุณไม่ยับยั้งการบันทึก ขนาดที่ร้องขอเปลี่ยนแปลงไปเมื่อ Apple ตัดสินใจ ... ทำให้พวกเราไล่ตาม 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 วางไอคอนในไดเรกทอรี / สาธารณะ


1
การเพิ่มภาพไม่ได้แก้ไขปัญหา มีการร้องขอสำหรับเนื้อหาที่ไม่มีอยู่ ทุกครั้งที่คำขอนี้เกิดขึ้นเซิร์ฟเวอร์จะตอบกลับและบันทึกรายการจะถูกเขียน นั่นไม่ได้มีประสิทธิภาพ
Tass

-1

เพียงสร้างไฟล์ขนาดศูนย์เรียกว่าชื่อที่เหมาะสม

คำขอจะพึงพอใจโดยไม่มีการถ่ายโอนข้อมูลเพิ่มเติมหรือสายการบันทึกเพิ่มเติม


1
คำตอบเก่ามาก แต่ไม่แนะนำให้ใช้ไฟล์ขนาดศูนย์เนื่องจากเว็บคลิป (ลิงก์ที่ผู้ใช้อาจสร้างขึ้นบนหน้าจอหลัก) จะปรากฏเป็นกล่องสี่เหลี่ยมที่ไม่มีเนื้อหา แม้ว่าฉันจะไม่ชอบรูปแบบการต่อต้านที่ซับซ้อนที่แอปเปิ้ลสร้างขึ้นมันจะเป็นการดีกว่าที่จะรวบรวมข้อผิดพลาดในล็อกไฟล์ได้ดีกว่าการเสนอประสบการณ์ 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 ร้องขอ มันไม่เกี่ยวข้องกับลิงค์ใด ๆ ในไฟล์โครงการของบุคคล
แบรดโคช์

1
รูปนี้ถูกร้องขอโดย droid razr ของฉันด้วยดังนั้นฉันไม่แน่ใจว่าเป็นของพื้นเมืองสำหรับอุปกรณ์ iOS เท่านั้น
Tass

2
ทำไม Apple ไม่สามารถชำระให้กับ favicon.ico เหมือนคนอื่นได้?
Tony Payne
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.