【发布时间】:2015-01-31 23:59:32
【问题描述】:
我有一个在 Apache 上的 mod_wsgi 下运行的 Flask 应用程序。由于网站的各个部分是静态的,而其他部分是动态的,因此网站的动态部分使用mod_rewrite 路由到 Flask 应用程序,如下所示:
.htaccess
RewriteEngine on
RewriteBase /
RewriteRule ^(foo(/.*)?)$ /myapp.wsgi/$1 [L,QSA]
RewriteRule ^(bar(/.*)?)$ /myapp.wsgi/$1 [L,QSA]
# etc.
myapp.wsgi
from flask import Flask, request
application = Flask(__name__)
@application.route("/foo/")
def foo():
return request.url
@application.route("/bar/")
def bar():
return redirect(request.url + "baz/")
当我访问http://www.mywebsite.com/foo/ 时,页面告诉我我的网址是http://www.mywebsite.com/myapp.wsgi/foo/。
当我访问http://www.mywebsite.com/bar/ 时,页面会将我重定向到http://www.mywebsite.com/myapp.wsgi/bar/baz/。
Flask 的自动重定向也会发生这种情况:当我访问 http://www.mywebsite.com/foo(没有尾部斜杠)时,Flask 重定向以添加斜杠,但它重定向到 http://www.mywebsite.com/myapp.wsgi/foo/。
有没有一种简单的方法可以让 Flask 应用程序在 URL 中不包含 /myapp.wsgi,而只使用相对于路由所在位置的 URL? (例如/foo/和/bar/)
【问题讨论】:
标签: .htaccess url mod-rewrite flask mod-wsgi