2010-09-24 3 views
6

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

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

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



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

Заранее спасибо за помощь :-)

ответ

17

Что-то, как это должно заставить вас начать:

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

Другим способом вы можете это сделать, это изменить обработчик для старого 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-адресов.

+0

Обратите внимание, что если вы перенаправляетесь на якорь, вы не можете привязать его к 'new_hotness'. Вы должны использовать другой параметр, называемый '_anchor', чтобы указать его. https://stackoverflow.com/questions/21583594/flask-redirect-url-with-anchor – phyatt

Смежные вопросы