You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:57:18