cherrypy serve index.html 在根目录(但不是其他文件)
cherrypy serve index.html at root (but not other files)
使用 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()
但是,在这样做的过程中,我似乎也在公开我在网络根目录中的所有文件。例如,人们还可以下载 server.py(其中包含我的 cherrypy 代码)。
有办法解决这个问题吗?我知道有些人会尝试通过 http://www.example.com/index.html and I don't want them to 404 each time, since cherrypy will only allow them to go to http://www.example.com or http://www.example.com/index 访问我的网站,这对我来说似乎是个问题。
当务之急是分离静态内容的代码。例如,创建一个 'static' 目录,如图所示。
至于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()
使用 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()
但是,在这样做的过程中,我似乎也在公开我在网络根目录中的所有文件。例如,人们还可以下载 server.py(其中包含我的 cherrypy 代码)。
有办法解决这个问题吗?我知道有些人会尝试通过 http://www.example.com/index.html and I don't want them to 404 each time, since cherrypy will only allow them to go to http://www.example.com or http://www.example.com/index 访问我的网站,这对我来说似乎是个问题。
当务之急是分离静态内容的代码。例如,创建一个 'static' 目录,如图所示。
至于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()