10

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

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

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

4

4 回答 4

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'
)

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

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

# 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
于 2013-10-19T02:21:21.427 回答
5

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

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

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

于 2012-07-25T01:52:05.470 回答
2

浏览器会自动在您网站的根目录中查找 /favicon.ico 文件。此错误仅表示文件“favicon.ico”不存在。只需创建一个图标文件(或从众多 favicon 创建者站点之一下载一个)并将其放置在您网站的根 Web 目录(public_html 等)中。

要获得更好的解决方案,请编辑网页的 HTML 以包含指向网站图标文件的特定链接:

<html>
<head>
    <link rel="icon" type="image/png" href="http://example.com/myicon.png">
    ...

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

于 2012-07-24T16:39:35.697 回答
1

由于web.py限制您只能使用/static静态数据的路径,因此实际上没有办法正确地为favicon开发服务器提供服务。摆脱 404 日志的最好方法是在映射中添加一个 url 处理程序:

urls = ("/favicon.ico", "dummy")

并且在dummy处理程序中只传递一个空的 200 响应。

于 2012-07-24T23:57:24.820 回答