【问题标题】:web.py development server - favicon.ico - 404 Not Foundweb.py 开发服务器 - favicon.ico - 404 未找到
【发布时间】:2012-07-24 16:34:31
【问题描述】:

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

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

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

【问题讨论】:

    标签: python favicon web.py


    【解决方案1】:

    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
    

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        浏览器会自动在您网站的根目录中查找 /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

        【讨论】:

        • 我似乎记得某些版本的 IE 需要 rel="shortcut icon" - 但似乎无法再次找到它
        • 我有一个网站图标,它位于项目根目录中,紧挨着应用程序代码。我已经尝试将它移动到项目中的各个位置,例如 /static,但我仍然收到错误消息。问题是web.py开发服务器不知道去哪里找,也不知道怎么告诉它去哪里找。
        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-14
          • 2015-04-15
          • 2016-05-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多