Heroku에서 즐겨 찾기 아이콘을 어떻게 배치합니까?


11

Hello worldHeroku 앱에 대한 다음 코드가 있습니다. 또한 내 프로젝트의 루트 폴더에는 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페이지에 즐겨 찾기 아이콘 (최소한 Chrome) 만 표시합니다.


2

레일 앱의 폴더에 favicon.ico 이미지를 넣었습니다 public/. 그런 다음 heroku에 배포하고 새 브라우저 캐시가 나타나기 전에 브라우저 캐시를 비워야했습니다.


1

내가 사용하는 것은 다음과 같습니다.

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

Internet Explorer에는 "바로 가기"가 있어야한다고 생각합니다 (IE는 일반적으로 즐겨 찾기 아이콘을 확인하지만).

그러나 아이콘이 잘못된 위치에있는 것처럼 들립니다. 을 통해 액세스 할 수 있어야합니다 yoursite.com/favicon.ico. Chrome에서 페이지 소스를보고 확인할 /favicon.ico수도 있으며 밑줄이 그어진 링크가 될 것입니다. 지정한 위치를 열려면 클릭하십시오.

업데이트 : .htaccess파일이 있습니까? 당신이 말한대로, 기존 파일이 앱을 우회하기 위해 예외를 만들어야하는 것처럼 들립니다. Apache를 사용하는 경우 다음과 같은 것을 사용하십시오.

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

사용중인 플랫폼에 해당하는 것이 있어야합니다.


플라스크에 있습니까? Flask는 모든 URL GET에 대해 처리기 스크립트를 찾습니다. 나는 여전히 404를 얻는다.
— 키트

@Kit 죄송합니다. 솔직히 말하면 Heroku 또는 Flask에 대해 아무것도 몰라요. 방금 응용 프로그램이 제대로 작동한다고 가정했지만 잘못된 HTML이 출력되었습니다.
— DisgruntledGoat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.