Heroku'ya nasıl bir favicon yerleştiririm?


11

Hello worldHeroku uygulamam için aşağıdaki kod var . Ayrıca projemin kök klasöründe bir favicon.ico.

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

html = '''
<!doctype html>
<html>
  <head>
    <link rel="shortcut icon" href="https://webmasters.stackexchange.com/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)

Uygulamama göz attığımda a favicon. Ayrıca, kontrol heroku logsettiğimde, aşağıdaki 404satırı alıyorum :

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 -

Yanıtlar:


6

Hemen burada buldum: http://flask.pocoo.org/docs/patterns/favicon/

Ondan biraz farklıydı ve işte yaptım:

  1. Ağacımda, simgeyi static/images/favicon.ico
  2. HTML'de, aşağıdaki satır var <head>:

    <link rel="shortcut icon" href="https://webmasters.stackexchange.com/favicon.ico">
    
  3. Flask uygulamam için şu URL işleyicisine sahibim /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')
    

    Neden image/png? Çünkü kullanırsam image/vnd.microsoft.icon, o zaman göz http://myapp.heroku.com/favicon.icoatıyorum, bir indirme iletişim kutusu alıyorum. image/pngfavicon'u sayfada görüntüler (en azından Chrome'da).


2

Ben koymak favicon.ico benim görüntüyü public/benim raylar app klasörüne. Sonra heroku'ya konuşlandım ve yeni bir tane ortaya çıkmadan önce tarayıcı önbelleğimi temizlemem gerekti.


1

İşte ne kullanıyorum:

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

Internet Explorer için "kısayol" orada olması gerektiğine inanıyorum (IE genellikle ne olursa olsun bir favicon kontrol edecektir).

Ancak, simge yanlış konumda görünüyor. Buna üzerinden erişebilmelisiniz yoursite.com/favicon.ico. Ayrıca sayfa kaynağını Google Chrome'da görüntüleyerek de kontrol edebilirsiniz ve /favicon.icoaltı çizili bir bağlantı olacaktır - belirttiğiniz konumu açmak için bu bağlantıyı tıklayın.

GÜNCELLEME: .htaccessDosyanız var mı? Söylediklerinizden, varolan dosyaların uygulamayı atlaması için bir istisna yapmanız gerektiği anlaşılıyor. Apache kullanıyorsanız şöyle bir şey kullanırsınız:

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

Kullandığınız platform için bir eşdeğer olmalıdır.


Bu Flask'ta mı? Sanırım Flask, kendisine gönderilen her URL için bir işleyici komut dosyası arar. Hala 404'ler alıyorum.
Kit

@Kit Üzgünüm, dürüst olmak gerekirse Heroku veya Flask hakkında hiçbir şey bilmiyorum. Ben sadece app iyi çalıştı ama bazı yanlış HTML çıktı varsaydı.
15.02.2012
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.