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

替换WordPress为Django后,mydomain.com/portal访问出现404错误求助

解决方案

问题核心是Django通过Passenger托管接管了所有根路径请求,包括/portal,导致WHMCS的URL重写规则无法生效。直接访问index.php能正常加载说明PHP解析环境正常,只需调整.htaccess规则,让/portal下的请求跳过Django,交给WHMCS处理。

修改根目录.htaccess文件

将以下规则插入现有配置中,放在Passenger配置块之前:

RewriteEngine On

# 保留原有HTTPS强制跳转规则
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Header always set Content-Security-Policy "upgrade-insecure-requests;"

# WHMCS URL重写:将/portal下非文件/非目录请求转发到index.php
RewriteCond %{REQUEST_URI} ^/portal/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^portal/(.*)$ /portal/index.php/$1 [L,PT]

# 让Passenger忽略/portal路径,避免Django拦截
PassengerIgnorePath /portal

# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN
PassengerAppRoot "/home/user/mydomain.com"
PassengerBaseURI "/"
PassengerPython "/home/usr/virtualenv/mydomain.com/3.9/bin/python"
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END
# DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION BEGIN
<IfModule Litespeed>
</IfModule>
# DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION END

# 保留原有静态/媒体文件规则
<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^static/(.*)$ /home/usr/mydomain.com/staticfiles/$1 [QSA,L,NC]
</IfModule>

<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^media/(.*)$ /home/usr/mydomain.com/blog_images/$1 [QSA,L,NC]
</IfModule>

<FilesMatch "\.(?i:ico|flv|jpg|jpeg|png|gif|js|css)$">
    <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresDefault "access plus 1 month"
    </IfModule>
    FileETag MTime Size
</FilesMatch>

关键规则说明

  1. RewriteRule ^portal/(.*)$ /portal/index.php/$1 [L,PT]:将/portal下的动态请求(非文件/目录)转发到WHMCS的index.php,PT标志确保Apache继续将请求交给PHP解析,而非直接返回结果。
  2. PassengerIgnorePath /portal:明确告诉Passenger不要处理/portal路径的请求,彻底避免Django拦截。
  3. 原有HTTPS跳转、静态缓存规则和CloudLinux系统配置全部保留,无需改动。

你之前尝试的规则仅调整了HTTPS跳转的范围,没有解决/portal请求被Django拦截的核心问题,因此无效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:50:24