web.py开发服务器 - favicon.ico - 404 Not Found

时间:2012-07-24 16:34:31

标签: python favicon web.py

使用开发服务器运行web.py应用程序时,如何摆脱favicon的404错误?

"HTTP/1.1 GET /" - 200 OK
"HTTP/1.1 GET /favicon.ico" - 404 Not Found

我能找到的关于消除此错误的所有内容都与在Apache配置中指定资源的路径有关。这显然对开发服务器用例没有帮助。有没有办法在urls元组中指定静态资源?您可以在web.py应用程序中定义文档根目录吗?

5 个答案:

答案 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">
    ...

请参阅http://www.w3.org/2005/10/howto-favicon

答案 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') .