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

在cPanel共享主机部署Flask应用仅根URL可访问的问题求助

Flask应用在cPanel共享服务器部署后非主页路由404问题排查与解决

核心问题分析

主页能正常加载,但/about-us等子路由返回404,说明Passenger未正确将非静态/非文件的请求转发给Flask应用,核心问题出在.htaccess的Rewrite规则配置不完整,同时存在路由规范细节问题。

解决方案步骤

1. 修复.htaccess配置

你的.htaccess缺少关键的请求转发规则,导致非静态资源请求无法被Flask处理。替换为以下完整配置:

# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN
PassengerAppRoot "/home/user/public_html/subdomain.domain.com"
PassengerBaseURI "/"
PassengerPython "/home/user/virtualenv/public_html/subdomain.domain.com/3.8/bin/python"
PassengerAppLogFile "/home/user/public_html/subdomain.domain.com/error.log"
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END

RewriteEngine On
# 直接返回静态文件请求,不经过Flask
RewriteRule ^static/ - [L]
# 将所有非文件、非目录的请求转发给Flask入口处理
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /passenger_wsgi.py/$1 [L]
  • 移除了原配置中无效的RewriteRule ^http://%{HTTP_HOST}%{REQUEST_URI} \[END,NE\](语法错误且无实际作用)
  • 新增最后一行规则,确保所有动态请求都被Passenger转发给Flask应用

2. 修正路由规范

views.py中services路由缺少开头的斜杠,虽然Flask会自动补全,但为避免潜在路径解析问题,统一规范路由写法:

# 原代码
@views.route('services/')
# 修改为
@views.route('/services/')

3. 验证基础配置与权限

  • 确保passenger_wsgi.py、app.py及website目录下所有文件权限为644,目录权限为755
  • 确认虚拟环境路径/home/user/virtualenv/public_html/subdomain.domain.com/3.8/bin/python正确,且已安装Flask等所有依赖
  • 查看error.log文件(路径已在.htaccess中配置),排查是否存在依赖缺失或运行时报错

验证修改

  1. 保存所有文件修改
  2. 在cPanel的Passenger管理界面重启对应应用
  3. 访问subdomain.domain.com/about-us和subdomain.domain.com/services/,确认页面正常加载

内容的提问来源于stack exchange,提问作者PAWAN BISHT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:50:19