Search code examples
pythonstatictornadofavicon

How to serve static files from a different directory than the static path?


I am trying this:

favicon_path = '/path/to/favicon.ico'

settings = {'debug': True, 
            'static_path': os.path.join(PATH, 'static')}

handlers = [(r'/', WebHandler),
            (r'/favicon.ico', tornado.web.StaticFileHandler, {'path': favicon_path})]

application = tornado.web.Application(handlers, **settings)
application.listen(port)
tornado.ioloop.IOLoop.instance().start()

But it keeps serving the favicon.ico that I have in my static_path (I have two different favicon.ico's in two separate paths, as indicated above, but I want to be able to override the one in the static_path).


Solution

  • Delete static_path from the app settings.

    Then set your handler like:

    handlers = [
                (r'/(favicon\.ico)', tornado.web.StaticFileHandler, {'path': favicon_path_dir}),
                (r'/static/(.*)', tornado.web.StaticFileHandler, {'path': static_path_dir}),
                (r'/', WebHandler)
    ]