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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top