web.py APIドキュメントは、ブラウザを別の場所にリダイレクトする「303SEEOTHER」応答を生成する「web.seeother()」関数を参照しています。
(http://webpy.org/docs/0.3/api#web.applicationを参照してください)
これは、htmlファイルのヘッダー変更を必要としないサーバー側のソリューションです。サーバーが実際にhtmlファイルを処理していない場合に特に便利です。
解決:
デフォルトの/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