使用开发服务器运行web.py应用程序时,如何摆脱favicon的404错误?
"HTTP/1.1 GET /" - 200 OK
"HTTP/1.1 GET /favicon.ico" - 404 Not Found
我能找到的关于消除此错误的所有内容都与在Apache配置中指定资源的路径有关。这显然对开发服务器用例没有帮助。有没有办法在urls元组中指定静态资源?您可以在web.py应用程序中定义文档根目录吗?
答案 0 :(得分:5)
像Ryan Griggs建议的那样,但是使用/static/favicon.ico作为href。
<html>
<head>
<link rel="icon" type="image/png" href="/static/favicon.ico">
...
web.py dev服务器将所有/static/
个URL映射到static/
目录中的文件。
答案 1 :(得分:4)
web.py API文档引用了一个'web.seeother()'函数,该函数生成一个“303 SEE OTHER”响应,将浏览器重定向到另一个位置。
(参见{{3 }})
这是一个服务器端解决方案,不需要在html文件中更改标头;如果服务器实际上没有处理html文件,则特别有用。
解决方案:
从默认的/favicon.ico映射网址路线并创建一个新类来处理此路线:
# Define API Routes
urls = (
'/', 'index',
'/favicon.ico', 'icon'
)
创建一个包含favicon.ico
的(可访问Web的)静态目录创建一个新类来处理此文件:
# Process favicon.ico requests
class icon:
def GET(self): raise web.seeother("/static/favicon.ico")
以下是显示请求的服务器日志:
<ip#> - [18/Oct/2013 21:54:54] "HTTP/1.1 GET /favicon.ico" - 303 See Other
<ip#> - [18/Oct/2013 21:54:54] "HTTP/1.1 GET /static/favicon.ico" - 200
<ip#> - [18/Oct/2013 22:03:02] "HTTP/1.1 GET /favicon.ico" - 303 See Other
<ip#> - [18/Oct/2013 22:03:03] "HTTP/1.1 GET /static/favicon.ico" - 304 Not Modified
答案 2 :(得分:1)
浏览器会自动在您网站的根目录中查找/favicon.ico文件。此错误仅表示文件'favicon.ico'不存在。只需创建一个图标文件(或从众多favicon创建者网站之一下载一个)并将其放在您网站的根网站目录(public_html等)中。
要获得更好的解决方案,请修改您的网页HTML以包含指向favicon文件的特定链接:
<html>
<head>
<link rel="icon" type="image/png" href="http://example.com/myicon.png">
...
答案 3 :(得分:1)
由于web.py
限制您仅使用静态数据的/static
路径,因此实际上没有办法正确地使用dev服务器提供favicon
。摆脱404日志的最好方法就是在映射中添加一个url处理程序:
urls = ("/favicon.ico", "dummy")
并且在dummy
处理程序中只传递一个空的200响应。
答案 4 :(得分:0)
在@vonPetrushev答案上添加更多内容, 如果您遵循他的代码,
urls = ("/favicon.ico", "dummy") .
您将获得此错误提示
NameError(“未定义名称“ Cookie””)回溯(最近一次调用 最后):文件 “ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/application.py”, 257行,进行中 返回self.handle()文件“ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/application.py”, 第248行,在手柄中 返回self._delegate(fn,self.fvars,args)文件“ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/application.py”, _delegate中的第487行 cls = fvars [f] KeyError:“虚拟”
在处理上述异常期间,发生了另一个异常:
回溯(最近通话最近):文件 “ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/application.py”, 255行,进行中 返回p(lambda:进程(处理器))文件“ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/application.py”, 处理器中的第643行 返回处理程序()文件“ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/application.py”, 255行,在 返回p(lambda:进程(处理器))文件“ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/application.py”, 264行,进行中 引发self.internalerror()文件“ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/application.py”, 545行,发生内部错误 返回debugerror()文件“ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/debugerror.py”, 调试错误中的第313行 返回web._InternalError(djangoerror())文件“ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/debugerror.py”, djangoerror中的303行 返回t(exception_type,exception_value,frames)文件“ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/template.py”, 第904行,在致电中 返回BaseTemplate。调用((自身,* a,** kw)文件“ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/template。 py”, 第831行,在致电中 返回self.t(* a,** kw)文件“ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/debugerror.py”, 第196行,在模板中 文件“ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/webapi.py”, 第487行,在Cookie中 ctx._parsed_cookies = parse_cookies(http_cookie)文件“ /Users/icehongssi/workplace/cute_virtualenvs/avo3.5/lib/python3.5/site-packages/web/webapi.py”, parse_cookies中的第447行 cookie = Cookie.SimpleCookie() NameError:名称“ Cookie”未定义。
为避免这种情况, 像这样将网址之一映射到favicon.ico
urls = (
'/', 'home',
'/favicon.ico', 'home') .