Riorientare un vecchio URL a uno nuovo con la boccetta micro-quadro
-
05-10-2019 - |
Domanda
Sto facendo un nuovo sito web per sostituire uno corrente, utilizzando Flask micro-quadro (in base a Werkzeug) che utilizza Python (2,6 nel mio caso).
La funzionalità di base e molte pagine sono la stessa cosa. Tuttavia, utilizzando Flask molti degli URL precedenti sono diverse da quelle vecchie.
Ho bisogno di un modo per qualche memorizzare il ciascuno dei vecchi URL e il nuovo URL, in modo che se un utente digita un vecchio URL sono semplicemente inoltrate al nuovo URL e tutto funziona bene per loro.
Qualcuno sa se questo è possibile nel pallone?
Grazie in anticipo per il vostro aiuto: -)
Soluzione
Qualcosa del genere dovrebbe iniziare:
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)
Altri suggerimenti
Un altro modo si può fare questo è quello di cambiare il gestore per il vecchio URL semplicemente di reindirizzamento in modo esplicito.
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'))
Se si dispone già di un gestore per il vecchio URL, allora si potrebbe trovare la cosa più facile da fare è quanto sopra, vale a dire solo sostituendo il corpo con:
return redirect(url_for('new_hotness'))
La risposta di Radomir può essere preferibile soprattutto se si hanno un sacco di mappature vecchi-nuovi URL, tuttavia.