How to serve static files from a different directory than the static path?
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)]
You need to wrap favicon.ico with parenthesis and escape the period in the regular expression. Your code will become
favicon_path = '/path/to/favicon.ico' # Actually the directory containing the favicon.ico filesettings = { '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()
There are two ways to do it.
1. use static_url_prefix in settings.
e.g.
settings = dict( static_path=os.path.join(os.path.dirname(__file__), 'static'), static_url_prefix="/adtrpt/static/",)
2. use custom handler
Append custom handler to handlers
handlers.append((r"/adtrpt/static/(.*)", MyStaticFileHandler, {"path": os.path.join(os.path.dirname(__file__), 'static')}))
Then implemente your custom methods.
class StaticHandler(BaseHandler): def get(self): path = self.request.path print(path) self.redirect(BASE_URI + path)