Python Flask: как реализовать массовое перенаправление нескольких URL-адресов?

Я знаю о функции Flask redirect(<URL>), которую я могу использовать внутри маршрутов.

Но у меня есть десятки URL-адресов, которые мне нужно перенаправить на другой сайт. Мне было интересно, есть ли способ реализовать перенаправления без написания нескольких операторов redirect(<URL>) во многих схемах и маршрутах.

Мне было интересно, могу ли я просто предоставить Flask свои данные сопоставления перенаправления в большом количестве. например

www.example.com/example-1 => subdomain.example.com/example-1
www.example.com/example-2 => subdomain.example.com/example-2
www.example.com/example-3 => subdomain.example.com/example-3
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
Учебник по веб-скрапингу
Учебник по веб-скрапингу
Привет, ребята... В этот раз мы поговорим о веб-скрейпинге. Целью этого обсуждения будет узнать и понять, что такое веб-скрейпинг, а также узнать, как...
Тонкая настройка GPT-3 с помощью Anaconda
Тонкая настройка GPT-3 с помощью Anaconda
Зарегистрируйте аккаунт Open ai, а затем получите ключ API ниже.
0
0
92
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Да, вы можете делать перенаправления со словарями или списком кортежей для их хранения.

Например:

from flask import Flask, redirect

app = Flask(__name__)

# Define a dictionary of redirect mappings
redirects = {
    "/example-1": "http://subdomain.example.com/example-1",
    "/example-2": "http://subdomain.example.com/example-2",
    "/example-3": "http://subdomain.example.com/example-3"
}

# Register a route to handle all the redirects
@app.route('/<path:path>')
def redirect_to_new_url(path):
    if path in redirects:
        new_url = redirects[path]
        return redirect(new_url, code=302)
    else:
        return "Page not found", 404

if __name__ == '__main__':
    app.run(debug=True)
Ответ принят как подходящий

Cheesecake87 из Reddit предоставил это решение, которое я отмечу как принятый ответ.

from flask import request

@app.before_request
def before_request():
    redir = (
        ('https://www.example.com/example-1', 'https://subdomain.example.com/example-1'), 
        ('https://www.example.com/example-2', 'https://subdomain.example.com/example-2')
    )
    for v in redir:
        if request.url in v[0]:
            return redirect(v[1], code=302)

Источник 2: https://stackoverflow.com/a/16121323

Hack-R решение было хорошим. Но правило URL-адреса перенаправления было отсортировано так, чтобы находиться в самом низу списка правил URL-адресов (по Werkzeug), поэтому перенаправление не происходило, пока я не удалил исходные маршруты, которые я хотел перенаправить.

С помощью этого решения URL-адреса оцениваются ДО того, как они попадут в список правил URL-адресов.

Другие вопросы по теме