【发布时间】:2016-07-26 19:16:18
【问题描述】:
注意:这个问题与“Add a prefix to all Flask routes”不同,因为我试图在 apache 级别解决这个问题。此外,烧瓶路线的建议修复无效!
从this post 开始,我尝试将 apache 设置为默认提供 PHP 文件,但将给定别名(即/flaskapp)指向 wsgi 路径。 wsgi 文件依次将请求路由到 python 烧瓶应用程序。
这是我正在尝试的 apache 配置(在 000-default.conf 下):
<VirtualHost *:80>
ServerName localhost
ServerAdmin webmaster@localhost
Alias / /var/www/html/
<Directory "/var/www/html">
Order Deny,Allow
Allow from all
Require all granted
</Directory>
WSGIScriptAlias /flaskapp "/var/www/flaskapp/deploy.wsgi"
<Directory /var/www/flaskapp>
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
在执行service apache2 restart 之后,我发现对http://myip/flaskapp 的请求会导致404 错误。其他一切正常。
到目前为止我尝试过的事情:
- 仔细检查所有文件和文件夹路径(未发现问题)
- 使用上述代码的 wsgi 部分将 wsgi 应用程序设置为独立的虚拟主机(工作正常)
- 将
app.config['APPLICATION_ROOT'] = '/flaskapp'添加到我的 app.py 文件中,正如问题“Add a prefix to all Flask routes”所建议的那样(没有任何效果)
我哪里出错了?
【问题讨论】:
-
不要使用别名/。这完全覆盖了 mod_wsgi。使用 DocumentRoot 指令指定主站点文件的位置。这样 mod_wsgi 可以覆盖子 URL。
-
是的,您是正确的,与声称的重复问题不同。不过,这里的人们通常不了解其中的微妙之处,只是做出假设。
-
感谢@GrahamDumpleton - 添加 DocumentRoot 解决了这个问题。随意写这个作为答案,或者我今晚可以这样做......
标签: python apache flask virtualhost