6

我正在制作一个新网站来替换当前网站,使用 Flask 微框架(基于 Werkzeug),它使用 Python(在我的情况下为 2.6)。

核心功能和很多页面是一样的。然而,通过使用 Flask,许多以前的 URL 与旧的不同。

我需要一种方法来以某种方式存储每个旧 URL 和新 URL,这样如果用户键入旧 URL,他们就会被简单地转发到新 URL,并且一切正常。



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

预先感谢您的帮助 :-)

4

2 回答 2

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)
于 2010-09-24T17:49:28.110 回答
4

您可以执行此操作的另一种方法是将旧 URL 的处理程序更改为简单地显式重定向。

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

如果您已经有旧 URL 的处理程序,那么您可能会发现上面最简单的方法是,即只需将正文替换为:

return redirect(url_for('new_hotness'))

但是,如果您有很多旧的新 URL 映射,Radomir 的答案可能更可取。

于 2016-08-16T20:14:09.917 回答