2010-11-26 2 views

ответ

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

Когда urlobject создается .Code экземпляр возвращает код страницы,

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 и дисплей «Критическая ошибка» Ошибка: HTTPResponse ('HTTP Response 303',) – cnk 2011-02-16 17:21:04

+0

Извините за задержку, некоторое время был у StackOverflow. Пример относится к версии HEAD от Git. Возможно, это изменилось, но я сомневаюсь. Вы проверили, какая именно ошибка произошла в вашем приложении? 500 обычно указывают на ошибки в вашем коде. – hayavuk 2011-03-05 10:33:16

2
@app.error(404) 
    def error(err): 
     bottle.response.status = 303 
     bottle.response.header['Location'] = '/' 
Смежные вопросы