cherrypy在index的服务器index.html(但不是其他文件)

时间:2015-09-24 16:58:08

标签: cherrypy

使用cherrypy,我可以使用以下配置信息提供静态index.html文件:

location = os.path.dirname(os.path.realpath(__file__))
conf = {
     '/': {
         'tools.staticdir.on': True,
         'tools.staticdir.dir': '',
         'tools.staticdir.root': location,
         'tools.staticdir.index': 'index.html'
     }
}
cherrypy.tree.mount(Root(), '/', conf)
cherrypy.engine.start()
cherrypy.engine.block()

但是,这样做看起来我也在Web根目录中公开了所有文件。例如,人们也可以下载server.py(其中包含我的樱桃代码)。

有没有办法解决这个问题?我知道有些人会尝试通过http://www.example.com/index.html访问我的网站,我不希望每次都访问404,因为cherrypy只会允许他们转到http://www.example.comhttp://www.example.com/index这对我来说似乎是一个问题。

1 个答案:

答案 0 :(得分:1)

紧急的是分离静态内容的代码。例如,创建一个静态的'目录,如图所示。

至于index.html,它是否应该是' /'的别名,您可以创建方法,在'出现时替换它们的名称。' 。通过' _',如下所述:cherrypy: respond to url that includes a dot?

一个例子:

#!/usr/bin/env python

import os.path
import cherrypy

class Root:
    @cherrypy.expose
    def index(self):
        return "bla"

    index_shtml = index_html = index_htm = index_php = index

location = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'static')

conf = {
     '/': {
         'tools.staticdir.on': True,
         'tools.staticdir.dir': '',
         'tools.staticdir.root': location,
     }
}

cherrypy.tree.mount(Root(), '/', conf)

cherrypy.engine.start()
cherrypy.engine.block()