2

我有一个用 php 编写的网站,其中包含诸如example.com/index.php?q=xyz. 现在我已经在烧瓶(python)中重写了它,它有example.com/search?q=xyz. 最好的方法是什么?

我想到的一种方法是编写一个 index.php 和 php 中的代码来重定向。但是是否有可能仅使用应用程序(烧瓶)来实现相同的目标?

更新:发送参数不完全相同,也有一些自定义。

4

3 回答 3

1

如果使用 apache,将重写规则放入 httpd.conf 文件的目录部分或放入 .htaccess 文件可能是最简单的方法。

于 2012-06-15T14:11:37.900 回答
1

是的,它可以在 Flask 中完成。

我将首先向您展示代码,然后再进行解释。

代码

    @app.route('/index.php')
    def index():
        url = url_for('search',q=request.args['q'])
        return redirect(url)

    @app.route('/search')
    def search():
        # Access q as request.args['q'] same as we have done above

解释

每当 Flask 接收到一些附加到有效 url 的参数时,在这种情况下 q 附加到 'index.php' url,带有?作为连接元素。它将这些参数保存在名为 args的 MultiDict(在此处阅读)中,该参数可用作 Flask 的全局请求变量的属性。

你访问它作为

    request.args['parameter_name']

请记住,参数值已转换为字符串,并且任何整数值都应通过 int() 传递。

此代码仅捕获 index.php url 和它的参数,然后重定向到您的新搜索 url,并按原样传递参数。您还可以处理参数并传递给搜索 url。这样,两个网址最终都会完成您想要的工作。

希望有帮助!:)

于 2012-06-17T19:21:25.417 回答
0

Flask 不关心规则中的名称是什么,因为它们不指向文件。你可以写:

@app.route('/index.php')
def index_view():
    pass
于 2012-06-15T18:29:25.673 回答