2010-11-26 7 views
2
@error(404) 
def error404(error): 
    return 'Nothing here, sorry' 

これは、bottle frameworkの404の応答方法です。しかし404で私は特定のURLにhttp://abc.com/と言うにリダイレクトしたいと思う。出来ますか? urlobjectが作成されると.CODEインスタンスは、ページのコードを返し特定のURLにリダイレクトする方法404

答えて

-2
import urllib 
url = urllib.urlopen('www.google.com/testing') #a 404 address 
if url.code == 404: 
    url = urllib.urlopen('www.google.com') 

3
@error(404) 
def error404(error): 
    from bottle import redirect 
    # maybe test the error to see where you want to go next? 
    redirect(new_url, 303) # HTTP 303 should be used in this case 

EDIT私はこれを行うことができ、100%わからないんだけど、と私はできません今すぐテストしてください。しかし、後でテストして、それに私を打つまで答えを更新します。

+0

使用しているボトルのバージョンは?私はボトルのエラー処理に問題があります - 私は、ドキュメントがコードで最新ではないためだと思います。私はボトル0.9.devを使用して上記のリダイレクトコードを試して、500のレスポンスコードとディスプレイ "Critical Error"エラーを受け取りました: HTTPResponse( 'HTTP Response 303'、) – cnk

+0

遅延の申し訳ありません、しばらくの間、StackOverflowをオフにしていました。この例は、GitのHEADバージョンを参照しています。その間に変わったかもしれないが、私はそれを疑う。あなたのアプリで正確なエラーが発生したことを確認しましたか? 500は通常、コード内にエラーを示唆します。 – hayavuk

2
@app.error(404) 
    def error(err): 
     bottle.response.status = 303 
     bottle.response.header['Location'] = '/' 
+1

答えを出すのではなく、その理由を説明できますか? – ArtB

関連する問題