我有一个用 php 编写的网站,其中包含诸如example.com/index.php?q=xyz
. 现在我已经在烧瓶(python)中重写了它,它有example.com/search?q=xyz
. 最好的方法是什么?
我想到的一种方法是编写一个 index.php 和 php 中的代码来重定向。但是是否有可能仅使用应用程序(烧瓶)来实现相同的目标?
更新:发送参数不完全相同,也有一些自定义。
如果使用 apache,将重写规则放入 httpd.conf 文件的目录部分或放入 .htaccess 文件可能是最简单的方法。
是的,它可以在 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。这样,两个网址最终都会完成您想要的工作。
希望有帮助!:)
Flask 不关心规则中的名称是什么,因为它们不指向文件。你可以写:
@app.route('/index.php')
def index_view():
pass