Flask结合Apache部署后/process二级页面无法加载问题求助
Flask部署Apache后/process路由404问题解决方案
核心问题分析
你通过WSGIScriptAlias /audit_transaction将Flask应用挂载到了/audit_transaction路径下,这意味着本地调试时的/process路由,在Apache部署后实际访问路径应为/audit_transaction/process。但你的表单提交可能仍直接指向/process,导致服务器无法找到对应URL。
具体修复步骤
1. 修正表单提交路径(推荐方案)
修改前端表单的action属性,不要硬写/process,而是用Flask的url_for函数自动生成适配部署环境的路径:
<form method="POST" action="{{ url_for('process_inputs') }}"> <!-- 表单输入项 --> </form>
url_for会根据WSGI配置的前缀自动拼接完整URL,无论本地调试还是Apache部署都能准确指向处理路由。
2. 配置Flask应用根路径(可选)
若不想修改前端代码,可在Flask应用中设置APPLICATION_ROOT,让所有路由自动添加前缀:
app = Flask(__name__) app.config['APPLICATION_ROOT'] = '/audit_transaction'
此设置会让url_for生成的路径自带/audit_transaction前缀,同时确保路由规则匹配正确。
3. 完善Apache WSGI配置
确保配置覆盖项目所有必要目录并设置正确权限:
WSGIScriptAlias /audit_transaction C:/scripts_mains/audit_trace_doccode_track/wsgi_script/wsgi_script.wsgi <Directory C:/scripts_mains/audit_trace_doccode_track/wsgi_script> Require all granted </Directory> <Directory C:/scripts_mains/audit_trace_doccode_track/templates> Require all granted </Directory> <Directory C:/scripts_mains/audit_trace_doccode_track/static> Require all granted </Directory>
单独为模板、静态文件目录设置权限,避免加载资源时出现权限异常。
4. 验证路由有效性
重启Apache后,直接访问http://你的服务器地址/audit_transaction/process,若能正常响应,说明路由本身无问题,问题确实出在表单提交路径上。
内容的提问来源于stack exchange,提问作者C_Blake
相关产品推荐
相关产品推荐

