2010-09-24 23 views
6

Geçerli olanı değiştirmek için yeni bir web sitesi hazırlıyorum, Flask mikro çerçevesini kullanarak (Werkzeug'u temel alan) Python kullanan (2.6 durumda).Eski bir URL'yi Flask mikro çerçevesiyle yeniden yönlendiriliyor

Temel işlevler ve birçok sayfa aynıdır. Ancak Flask kullanarak önceki URL'lerin çoğu eskilerden farklıdır.

Eski URL'lerin ve yeni URL'nin her birini bir şekilde depolamanın bir yoluna ihtiyacım var. Böylece, bir kullanıcı eski bir URL'de yazıyorsa, basitçe yeni URL'ye yönlendirilir ve her şey onlar için iyi çalışır.



bu Flask mümkün olup olmadığını bilen var mı? Böyle

cevap

17

şey başlamak gerekir :-)

Yardımlarınız için şimdiden teşekkürler:

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

Bunu yapmanın bir başka yolu eski URL için işleyici değiştirmektir basitçe açıkça yönlendirin.

return redirect(url_for('new_hotness')) 

Radomir cevabı tercih edilebilir:

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

Zaten eski URL için bir işleyici varsa, o zaman yapılacak en kolay şey bulabilir yukarıda, yani sadece ile gövdesini değiştirirken olduğunu özellikle de eski bir çok yeni URL eşlemeniz varsa.

+0

Not: Bir bağlantıya yönlendiriyorsanız, 'new_hotness' öğesine yapıştıramazsınız. Bunu belirtmek için '_anchor' adlı başka bir parametre kullanmalısınız. https://stackoverflow.com/questions/21583594/flask-redirect-url-with-anchor – phyatt

İlgili konular