Redirigeant une ancienne URL vers un nouveau avec micro-cadre Flask
-
05-10-2019 - |
Question
Je fais un nouveau site Web pour remplacer qui utilise Python (2.6 dans mon cas) un courant, en utilisant des micro-cadre Flask (basé sur Werkzeug).
La fonctionnalité de base et de nombreuses pages sont les mêmes. Cependant, en utilisant un grand nombre Flask des URL précédentes sont différentes pour les anciens.
je besoin d'un moyen de quelque sorte stocker les chacune des anciennes URL et la nouvelle URL, de sorte que si un utilisateur tape dans une ancienne URL, ils sont simplement transférés vers la nouvelle URL et tout fonctionne bien pour eux.
Ne sait à personne si cela est possible dans Flask?
Merci d'avance pour votre aide: -)
La solution
Quelque chose comme cela devrait vous aider à démarrer:
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)
Autres conseils
Une autre façon que vous pouvez faire est de changer le gestionnaire de l'ancienne URL simplement redirect explicitement.
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'))
Si vous avez déjà un gestionnaire pour l'ancienne URL, vous trouverez peut-être la meilleure chose à faire est ce qui précède, à savoir que remplacer le corps avec:
return redirect(url_for('new_hotness'))
La réponse de Radomir peut être préférable, surtout si vous avez beaucoup de nouveaux-anciens mappages d'URL, cependant.