ฉันจะปรับใช้ favicon บน Heroku ได้อย่างไร


11

ฉันมีHello worldรหัสต่อไปนี้สำหรับแอพ Heroku ของฉัน favicon.icoนอกจากนี้ในโฟลเดอร์รากโครงการของฉันฉันมี

import os
from flask import Flask
app = Flask(__name__)

html = '''
<!doctype html>
<html>
  <head>
    <link rel="shortcut icon" href="/webmasters//favicon.ico">
    <title>Hello world!</title>
  </head>
  <body>
    <p>Hello world!</p>
  </body>
</html>
'''

@app.route('/')
def index():
    return html

if __name__ == '__main__':
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port)

faviconเมื่อฉันเรียกดูแอปของฉันฉันไม่เห็น นอกจากนี้เมื่อฉันตรวจสอบheroku logsฉันได้รับ404บรรทัดต่อไปนี้:

2012-02-14T05:23:29+00:00 app[web.1]: <ip.ad.dr.es> - - [14/Feb/2012 05:23:29] "GET /favicon.ico HTTP/1.1" 404 -

คำตอบ:


6

ฉันเพิ่งพบมันที่นี่: http://flask.pocoo.org/docs/patterns/favicon/

ฉันแตกต่างจากมันเล็กน้อยและนี่คือสิ่งที่ฉันทำ:

  1. ในต้นไม้ฉันเก็บไอคอนไว้ static/images/favicon.ico
  2. ใน HTML ฉันมีบรรทัดต่อไปนี้ใน<head>:

    <link rel="shortcut icon" href="/webmasters//favicon.ico">
    
  3. ในแอพ Flask ของฉันฉันมีตัวจัดการ URL ต่อไปนี้ /favicon.ico

    @app.route('/favicon.ico')
    def favicon():
        return send_from_directory(os.path.join(app.root_path, 'static', 'images'),
                                   'favicon.ico', mimetype='image/png')
    

    ทำไมimage/png? เพราะถ้าฉันใช้image/vnd.microsoft.iconแล้วฉันก็ค้นหาhttp://myapp.heroku.com/favicon.icoฉันได้รับกล่องโต้ตอบดาวน์โหลด image/pngเพียงแสดง favicon บนหน้า (อย่างน้อยใน Chrome)


2

ฉันใส่รูปภาพfavicon.icoไว้ในpublic/โฟลเดอร์ของฉันในแอพทางรถไฟ จากนั้นฉันนำไปใช้กับ heroku และต้องล้างแคชเบราว์เซอร์ก่อนที่จะปรากฏขึ้นมาใหม่


1

นี่คือสิ่งที่ฉันใช้:

<link rel="shortcut icon" type="image/x-icon" href="/webmasters//favicon.ico">

ฉันเชื่อว่าควรมี "ทางลัด" ใน Internet Explorer (แม้ว่า IE จะตรวจสอบ favicon โดยไม่คำนึงถึง)

อย่างไรก็ตามดูเหมือนว่าไอคอนจะอยู่ผิดตำแหน่ง yoursite.com/favicon.icoคุณควรจะสามารถเข้าถึงได้ผ่านทาง คุณสามารถตรวจสอบได้ด้วยการดูแหล่งที่มาของหน้าเว็บใน Google Chrome และ/favicon.icoจะเป็นลิงก์ที่ขีดเส้นใต้ - คลิกที่เพื่อเปิดตำแหน่งที่คุณระบุ

อัปเดต: คุณมี.htaccessไฟล์หรือไม่ จากสิ่งที่คุณพูดดูเหมือนว่าคุณจะต้องทำการยกเว้นสำหรับไฟล์ที่มีอยู่เพื่อข้ามแอพ หากคุณใช้ Apache คุณจะใช้สิ่งนี้:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule your_rule_here [L]

ควรมีสิ่งที่เทียบเท่าสำหรับแพลตฟอร์มที่คุณใช้งาน


นี่คือ Flask หรือไม่? ฉันคิดว่า Flask ค้นหาสคริปต์ตัวจัดการสำหรับทุก URL ที่ส่งไป ฉันยังได้รับ 404
ชุด

@Kit ขอโทษที่บอกตามตรงฉันไม่รู้อะไรเกี่ยวกับ Heroku หรือ Flask ฉันแค่คิดว่าแอปทำงานได้ดี แต่เอาท์พุท HTML ที่ไม่ถูกต้อง
DisgruntledGoat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.