2011-09-05 41 views
4

當我嘗試瀏覽favicon.ico的,比如,我得到這個錯誤:問題的favicon.ico和robots.txt的在CherryPy的3.1

ValueError: Static tool requires an absolute filename (got 'favicon.ico') 

我能得到任何東西在我的/圖像,/ css和/ js文件夾。那些服務很好。該網站的外觀和行爲很好。這只是這兩個文件。

這是我的root.conf文件。

[/] 
tools.staticdir.on = True 
tools.staticdir.root = "/projects/mysite/root" 
tools.staticdir.dir = "" 

[/favicon.ico] 
tools.staticfile.on = True 
tools.staticfile.filename = "favicon.ico" 
tools.staticdir.on = True 
tools.staticdir.dir = "images" 

[/robots.txt] 
tools.staticfile.on = True 
tools.staticfile.filename = "robots.txt" 
tools.staticdir.on = True 
tools.staticdir.dir = "" 

[/images] 
tools.staticdir.on = True 
tools.staticdir.dir = "images" 

[/css] 
tools.staticdir.on = True 
tools.staticdir.dir = "css" 

[/js] 
tools.staticdir.on = True 
tools.staticdir.dir = "js" 

這裏是我的cherrypy.conf文件:

[global] 
server.socket_port = 8888 
server.thread_pool = 10 
tools.sessions.on = True 

這裏是我的 「startweb.py」 腳本:

import cherrypy 
from root.roothandler import Root 

cherrypy.config.update("cherrypy.conf") 

cherrypy.tree.mount(Root(), "/", "root/root.conf") 

if hasattr(cherrypy.engine, 'block'): 
    # 3.1 syntax 
    cherrypy.engine.start() 
    cherrypy.engine.block() 
else: 
    # 3.0 syntax 
    cherrypy.server.quickstart() 
    cherrypy.engine.start() 

回答

5

當您打開一個CherryPy的工具爲特定的URL,它開啓所有的「孩子」的URL下面它。因此,您的配置中的[/images],[/css][/js]部分似乎是多餘的。所以也是[/robots.txt]部分。

[/favicon.ico]也是多餘的,除了favicon.ico是特殊的,因爲CherryPy爲你設置一個典型的(作爲你的根對象的屬性;見_cptree.py)。所以重寫它是適當的:

[/] 
tools.staticdir.on = True 
tools.staticdir.root = "/projects/mysite/trunk/root" 
tools.staticdir.dir = "" 
tools.staticfile.root = "/projects/mysite/trunk/root" 

[/favicon.ico] 
tools.staticfile.on = True 
tools.staticfile.filename = "images/favicon.ico" 
0

我找到了一個解決方案,工作原理,但我不知道喜歡它很多。它要求把完整的絕對路徑放在3個地方。

這是新root.conf

[/] 
tools.staticdir.on = True 
tools.staticdir.root = "/projects/mysite/trunk/root" 
tools.staticdir.dir = "" 

[/favicon.ico] 
tools.staticfile.on = True 
tools.staticfile.filename = "/projects/mysite/trunk/root/images/favicon.ico" 

[/robots.txt] 
tools.staticfile.on = True 
tools.staticfile.filename = "/projects/mysite/trunk/root/robots.txt" 

[/images] 
tools.staticdir.on = True 
tools.staticdir.dir = "images" 

[/css] 
tools.staticdir.on = True 
tools.staticdir.dir = "css" 

[/js] 
tools.staticdir.on = True 
tools.staticdir.dir = "js"