2010-09-24 84 views
6

我正在使用使用Python的Flask微框架(基於Werkzeug)(我的情況是2.6)替換當前的一個新網站。使用Flask微框架將一箇舊URL重定向到一個新URL

核心功能和許多頁面是相同的。但是通過使用Flask,許多以前的URL與舊的不同。

我需要一種方式來存儲每個舊的URL和新的URL,這樣,如果用戶輸入一箇舊的URL,他們只是被轉發到新的URL,一切工作正常。



有沒有人知道這是否可能在燒瓶?

預先感謝您的幫助:-)

回答

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

如果你已經有舊網址的處理程序,那麼你可能會發現最容易做的事情是上面的,即只是替換正文:

return redirect(url_for('new_hotness')) 

的Radomir的回答可能是優選特別是如果你有很多新舊的URL映射,但是。

+0

請注意,如果您重定向到錨點,則無法將其粘貼到'new_hotness'上。您必須使用另一個名爲'_anchor'的參數來指定它。 https://stackoverflow.com/questions/21583594/flask-redirect-url-with-anchor – phyatt 2018-02-28 14:05:58

相關問題