2015-09-24 3 views
0

Использование CherryPy, я могу служить статический файл index.html, используя информацию ниже конфигурации: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 (который содержит мой вишневый код).

Есть ли способ обойти это? Я знаю, что некоторые люди попытаются получить доступ к моему сайту, выполнив http://www.example.com/index.html, и я не хочу, чтобы они были 404 каждый раз, так как cherrypy разрешает им идти только до http://www.example.com или http://www.example.com/index, это кажется проблемой для меня.

ответ

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() 
+0

Спасибо Паулу. Работает как шарм! – jrel

 Смежные вопросы

  • Нет связанных вопросов^_^