开发者

Redirecting an old URL to a new one with Flask micro-framework

开发者 https://www.devze.com 2023-01-17 06:34 出处:网络
I\'m making a new website to replace a current one, using Flask micro-framework (based on Werkzeug) which uses Python (2.6 in my case).

I'm making a new website to replace a current one, using Flask micro-framework (based on Werkzeug) which uses Python (2.6 in my case).

Th开发者_运维知识库e core functionality and many pages are the same. However by using Flask many of the previous URLs are different to the old ones.

I need a way to somehow store the each of the old URLs and the new URL, so that if a user types in an old URL they are simply forwarded to the new URL and everything works fine for them.

Does anybody know if this is possible in Flask?

Thank you in advance for your help :-)


Something like this should get you started:

from flask import Flask, redirect, request

app = Flask(__name__)

redirect_urls = {
    'http://example.com/old/': 'http://example.com/new/',
    ...
}

def redirect_url():
    return redirect(redirect_urls[request.url], 301)

for url in redirect_urls:
    app.add_url_rule(url, url, redirect_url)


Another way you can do this is to change the handler for the old URL to simply redirect explicitly.

from flask import Flask, redirect, url_for

app = Flask(__name__)

@app.route('/new')
def new_hotness():
    return 'Sizzle!'

@app.route('/old')
def old_busted():
    return redirect(url_for('new_hotness'))

If you already have a handler for the old URL, then you might find the easiest thing to do is the above, i.e. just replacing the body with:

return redirect(url_for('new_hotness'))

Radomir's answer may be preferable especially if you have a lot of old-new URL mappings, however.

0

精彩评论

暂无评论...
验证码 换一张
取 消