我有一个Flask项目,想将一些第三方服务集成到其中,例如Wordpress博客(该内容是用PHP编写的,不能集成到Flask项目中)。该服务可以在他们的服务上或我们的托管服务上拥有一个子域。但是想法是将这项服务组织为我的项目的子文件夹。
我知道在ASP.Net中很容易创建虚拟目录并分配可以在任何地方托管的整个项目。但是我不知道是否可以用Flask做到这一点以及如何做到这一点。
总结:
www.myproject.com/blog 应该实际上指向blog.myproject.com或myproject.wordpress.com
这不仅仅是同一项目中的一条路线!
第三方服务完全独立托管,与我的服务无关,甚至可以用其他某种语言或框架编写。
请不要将此问题标记为Add a prefix to all Flask routes的重复项,与它无关。
答案 0 :(得分:3)
Flask可以做到这一点,但这将非常丑陋且困难。您需要将所有对/blog/*
的请求重定向到上游blog.project.com/*
,并将结果返回给用户。那应该是这样的:
@app.route('/blog/<sub_request>')
def redirect_to_blog(sub_request):
res = requests.get(urljoin(blog_base, sub_request))
return res.content
通常,您甚至都不必考虑这一点。对于nginx
,这实际上是非常常见的情况。您应将nginx
用作反向代理服务器并管理所有子域。在这种情况下,您可以轻松实现所需的目标。
或者,对于apache2
来说,这也是一种非常常见的情况。 WordPress博客的服务器。您应该使用apache2
来管理Flask项目。而不是使用flask项目来管理apache2
服务器。