使用Flask、Pyramid或Bottle创建动态重定向?

0 投票
4 回答
2081 浏览
提问于 2025-04-17 06:20

我想创建一个网页应用,它可以根据用户输入的地址动态地跳转到一个网址。当用户通过这样的地址访问我的网站时:

http://mydomain1.com/a1b2c3d4

我想把这个用户重定向到这个网址:

http://mydomain2.com/register.php?id=a1b2c3d4&from=mydomain1.com

4 个回答

0

我的解决办法是使用Werkzeug的规则,采用路径类型:

host = 'domain2.org'
@app.route('/<path:path>')
def redirection(path):
    return redirect('http://%s/%s' % (host, path), code=301)

这在你搬家网站的时候很有用,比如你想把一个网站换成另一个网站,并且希望其他页面也能自动跳转。

2

这是我尝试的结果,我在flask方面还是个新手,所以还有很多可以改进的地方。

from flask import Flask, redirect, request
app = Flask(__name__)
host = 'domain2.org'

@app.route('/<path>')
def redirection(path):
    return redirect('http://'+host+'/register.php?id='+path+'&from='+request.host)

if __name__ == '__main__':
    app.run()

我编辑了一下,增加了主机到from参数中。

6

太好了,我喜欢一场精彩的争斗!

from pyramid.config import Configurator
from pyramid.httpexceptions import HTTPFound
from paste.httpserver import serve

config = Configurator()

config.add_route('redirect', '/{arg}')

def redirect_view(request):
    dst = 'http://mydomain2.com/register.php?id={id}&from={host}'
    args = {
        'id': request.matchdict['arg'],
        'host': request.host,
    }
    return HTTPFound(dst.format(**args))
config.add_view(redirect_view, route_name='redirect')

serve(config.make_wsgi_app(), host='0.0.0.0', port=80)

撰写回答