Перенаправление старого URL на новый с помощью микро-фреймворка Flask - PullRequest
6 голосов
/ 24 сентября 2010

Я создаю новый веб-сайт для замены текущего, используя микро-фреймворк Flask (на основе Werkzeug), который использует Python (в моем случае 2.6).

Основная функциональность и многие страницы - этотак же.Однако, используя Flask, многие из предыдущих URL-адресов отличаются от старых.

Мне нужен способ как-то сохранить каждый из старых и новых URL-адресов, чтобы, если пользователь вводит старый URL-адресони просто перенаправляются на новый URL, и у них все отлично работает.

Кто-нибудь знает, возможно ли это во Фляске?

Заранее благодарю за помощь: -)

Ответы [ 2 ]

17 голосов
/ 24 сентября 2010

Как-то так должно начаться:

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 голосов
/ 16 августа 2016

Другой способ сделать это - изменить обработчик старого 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'))

Если у вас уже есть обработчик для старого URL, то вы можете найти простейшее, что можно сделать, это выше, т.е. просто заменить тело на:

return redirect(url_for('new_hotness'))

Однако ответ Радомира может быть предпочтительнее, особенно если у вас много старых новых сопоставлений URL.

...