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

tpo*_*eux 7 python favicon web.py

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

"HTTP/1.1 GET /" - 200 OK
"HTTP/1.1 GET /favicon.ico" - 404 Not Found
Run Code Online (Sandbox Code Playgroud)

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

Ana*_*thu 5

像Ryan Griggs建议的那样,但是使用/static/favicon.ico作为href.

<html>
<head>
    <link rel="icon" type="image/png" href="/static/favicon.ico">
    ...
Run Code Online (Sandbox Code Playgroud)

web.py dev服务器将所有/static/URL 映射到目录中的static/文件.


xyc*_*cmu 5

web.py API文档引用了“ web.seeother()”函数,该函数生成
“ 303 SEE OTHER”响应,从而将浏览器重定向到其他位置。
(请参阅http://webpy.org/docs/0.3/api#web.application

这是一种服务器端解决方案,不需要更改html文件中的标头;如果服务器实际上没有处理html文件,则特别有用。

解:

从默认的/favicon.ico映射一个URL路由,并创建一个新类来处理此路由:

# Define API Routes
urls = (
    '/', 'index',
    '/favicon.ico', 'icon'
)
Run Code Online (Sandbox Code Playgroud)

创建一个包含favicon.ico的(可从网络访问的)静态目录

创建一个新类来处理此文件:

# Process favicon.ico requests
class icon:
    def GET(self): raise web.seeother("/static/favicon.ico")
Run Code Online (Sandbox Code Playgroud)

这是显示请求的服务器日志:

<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
Run Code Online (Sandbox Code Playgroud)