Flask项目的虚拟目录指向另一个单独托管的项目

时间:2018-10-27 04:37:11

标签: python flask

我有一个Flask项目,想将一些第三方服务集成到其中,例如Wordpress博客(该内容是用PHP编写的,不能集成到Flask项目中)。该服务可以在他们的服务上或我们的托管服务上拥有一个子域。但是想法是将这项服务组织为我的项目的子文件夹。

我知道在ASP.Net中很容易创建虚拟目录并分配可以在任何地方托管的整个项目。但是我不知道是否可以用Flask做到这一点以及如何做到这一点。

总结:

www.myproject.com/blog 应该实际上指向blog.myproject.com或myproject.wordpress.com

这不仅仅是同一项目中的一条路线!

第三方服务完全独立托管,与我的服务无关,甚至可以用其他某种语言或框架编写。

请不要将此问题标记为Add a prefix to all Flask routes的重复项,与它无关。

1 个答案:

答案 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服务器。