找不到web.py开发服务器-favicon.ico-404

2024-05-23 14:36:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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


Tags: py服务器web信息应用程序httpgetapache
3条回答

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

<html>
<head>
    <link rel="icon" type="image/png" href="/static/favicon.ico">
    ...

web.py dev server将所有/static/url映射到static/目录中的文件。

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

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

解决方案:

从default/favicon.ico映射url路由,并创建一个新类来处理此路由:

# 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

浏览器会自动在网站的根目录中查找/favicon.ico文件。此错误仅表示文件“favicon.ico”不存在。只需创建一个图标文件(或从众多favicon creator站点中下载一个),并将其放在网站的根web目录(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

相关问题 更多 >