【问题标题】:Redirecting an old URL to a new one with Flask micro-framework使用 Flask 微框架将旧 URL 重定向到新 URL
【发布时间】:2011-04-16 21:51:04
【问题描述】:

我正在创建一个新网站来替换当前网站,使用 Flask 微框架(基于 Werkzeug),它使用 Python(在我的例子中是 2.6)。

核心功能和很多页面是一样的。然而,通过使用 Flask,许多以前的 URL 与旧的不同。

我需要一种方法来以某种方式存储每个旧 URL 和新 URL,这样如果用户输入旧 URL,他们就会被简单地转发到新 URL,并且一切正常。



有人知道这在 Flask 中是否可行?

提前感谢您的帮助:-)

【问题讨论】:

    标签: python url-routing flask werkzeug


    【解决方案1】:

    这样的事情应该让你开始:

    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)
    

    【讨论】:

      【解决方案2】:

      您可以这样做的另一种方法是将旧 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 映射,则 Radomir 的答案可能更可取。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      • 2019-08-15
      • 2015-09-14
      • 1970-01-01
      • 2017-09-25
      相关资源
      最近更新 更多