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

Cpanel部署Flask应用问题:非首页模板及静态资源无法访问

Cpanel下Flask+WordPress路径冲突修复方案

问题根源

当前.htaccess的规则顺序和转发逻辑存在问题:

  • WordPress规则排在最前,且最后一条规则带[L]标记,会把所有非文件/非目录的请求直接转去WordPress的index.php,后续Flask规则根本没机会执行。
  • Flask转发规则仅指向目录,未关联到Flask的WSGI入口文件,导致子路由无法被解析。
  • 静态文件请求被错误转发,导致加载失败。

修改后的.htaccess代码

# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /

# 先处理Flask相关请求,跳过WordPress规则
RewriteRule ^app_name(/.*)?$ - [L,NC]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

# php -- BEGIN cPanel-generated handler, do not edit
# Set the "ea-php81" package as the default "PHP" programming language.
<IfModule mime_module>
AddHandler application/x-httpd-ea-php81 .php .php8 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit

# Flask应用路由处理:指向WSGI入口文件
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^app_name/(.*)$ /path/to/flask/app/passenger_wsgi.py/$1 [L,PT]

# 确保Flask静态文件可以直接访问
RewriteCond %{REQUEST_URI} ^/app_name/static/
RewriteRule ^(.*)$ $1 [L]

关键修改说明

  • 调整规则顺序:在WordPress核心规则前加入跳过Flask路径的规则,确保Flask相关请求不会被WordPress拦截。[NC]标记忽略大小写,避免路径大小写问题。
  • 关联Flask WSGI入口:把转发规则指向Flask的WSGI入口文件(通常是passenger_wsgi.py,如果你的入口文件名不同,替换成实际名称),[PT]标记让Apache把请求传递给WSGI处理器,使Flask能解析子路由。
  • 静态文件直接访问:添加规则让/app_name/static/路径下的文件直接返回,不经过Flask转发,解决静态资源加载失败问题。

额外检查项

  1. 确认Flask项目的passenger_wsgi.py配置正确,示例内容:
from app import app as application

(这里的app是你的Flask应用实例所在的文件,比如app.py)
2. 确保Flask项目的static文件夹路径正确,模板文件的静态资源引用使用Flask内置的url_for方法(比如url_for('static', filename='img/logo.png'))生成链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:14:54