Apache2部署Flask应用遭遇404 Not Found错误求助
解决Apache静态站与Flask表单提交404问题
核心问题:路由路径冲突
你的配置存在双重路径前缀叠加的问题:
- Apache的
WSGIScriptAlias /mailer /var/www/mailer/app.wsgi已将/mailer路径映射到Flask应用 - Flask蓝图又设置了
url_prefix='/mailer',导致蓝图下的路由额外增加一层/mailer前缀
最终实际有效接收路由为https://alyfit.fi/mailer/mailer/,但表单提交地址大概率是https://alyfit.fi/mailer/,因此返回404。
解决方案(二选一)
方案1:移除蓝图的url_prefix
修改mailer.py中的蓝图定义,去掉url_prefix参数:
mailer_bp = Blueprint('mailer', __name__)
保持Apache的WSGIScriptAlias配置不变,此时表单提交地址设为/mailer/即可匹配路由。
方案2:调整Apache的WSGIScriptAlias
修改000-default.conf中的WSGIScriptAlias:
WSGIScriptAlias / /var/www/mailer/app.wsgi
保持蓝图的url_prefix='/mailer'配置不变,表单提交地址设为/mailer/即可匹配路由。此方式下Apache会优先处理静态文件,不会影响原有静态站点的访问。
额外排查点
- 日志无内容:检查
/var/log/apache2/mailer_error.log的权限,确保www-data用户可写入:sudo chown www-data:www-data /var/log/apache2/mailer_error.log sudo chmod 640 /var/log/apache2/mailer_error.log - SSL配置缺失:当前443端口的虚拟主机缺少SSL证书配置,需补充:
SSLCertificateFile /path/to/your/certificate.pem SSLCertificateKeyFile /path/to/your/private-key.pem - 表单action验证:确保表单的
action属性正确指向目标路由,例如使用相对路径:<form action="/mailer/" method="POST">
内容的提问来源于stack exchange,提问作者user1712825
相关产品推荐
相关产品推荐

