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.