用Flask微框架重定向旧网址到新网址

6 投票
2 回答
6575 浏览
提问于 2025-04-16 04:34

我正在制作一个新网站,来替代现在的那个,使用的是Flask这个微框架(基于Werkzeug),我用的是Python(我的版本是2.6)。

新网站的核心功能和很多页面和旧网站是一样的。不过因为使用了Flask,很多以前的网址和现在的不一样了。

我需要一种方法来存储每个旧网址和新网址,这样如果用户输入旧网址,就能自动跳转到新网址,确保他们能正常使用网站。



有没有人知道在Flask中这样做是否可行?

提前谢谢大家的帮助 :-)

2 个回答

4

你还可以通过改变旧网址的处理方式,让它直接跳转到新网址。

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'))

如果你已经有了处理旧网址的代码,那么最简单的方法就是像上面那样,把内容替换成:

return redirect(url_for('new_hotness'))

不过,如果你有很多旧网址和新网址的对应关系,Radomir的回答可能会更好。

17

像这样的代码可以帮助你入门:

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)

撰写回答