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

子域名页面无法显示,跳转至app目录英文页面求助

问题排查与修复方案

1. 先确认子域名的文档根目录配置

检查主机面板(如cPanel、Plesk)里每个子域名的文档根目录是否准确指向对应子域名的独立文件夹,而非主站的public_html或app目录。如果只是在主站目录下创建了子域名文件夹,但未在面板中修改子域名的根目录指向,系统会默认沿用主站的路径规则,导致跳转到错误页面。

2. 修复ROOT_DIR配置代码的逻辑问题

你当前的配置代码逻辑存在错误,这是导致子域名跳转异常的核心原因:

$http_host = $_SERVER['HTTP_HOST'];

if (empty($_SERVER['DOCUMENT_ROOT'])) // document root directory
    $ROOT_DIR = $_SERVER['HOME'] . '/public_html';
else
{
    if (in_array($http_host, $sub_domains))
        $ROOT_DIR = str_replace($http_host, 'public_html', $_SERVER['DOCUMENT_ROOT']);
    else
        $ROOT_DIR = $_SERVER['DOCUMENT_ROOT'];
}

当匹配到子域名时,代码用str_replace将$_SERVER['DOCUMENT_ROOT']中的子域名替换为public_html,直接把根目录拉回主站路径,自然会显示主站app目录的英文页面。

修正后的配置代码

假设你的子域名目录结构为:

  • 主站:/home/user/public_html
  • 子域名es.reverd.com:/home/user/es.reverd.com
  • 子域名fr.reverd.com:/home/user/fr.reverd.com

可以改成以下两种方式:

方式一:固定映射子域名与目录

$http_host = $_SERVER['HTTP_HOST'];
// 定义子域名对应目录的映射表
$subdomain_dir_map = [
    'es.reverd.com' => '/home/user/es.reverd.com',
    'fr.reverd.com' => '/home/user/fr.reverd.com',
    // 补充其他子域名...
];

if (empty($_SERVER['DOCUMENT_ROOT'])) {
    $ROOT_DIR = $_SERVER['HOME'] . '/public_html';
} else {
    // 匹配子域名则用对应目录,否则用主站根目录
    $ROOT_DIR = isset($subdomain_dir_map[$http_host]) 
        ? $subdomain_dir_map[$http_host] 
        : $_SERVER['DOCUMENT_ROOT'];
}

方式二:子域名与目录同名时简化逻辑

$http_host = $_SERVER['HTTP_HOST'];
// 列出所有子域名
$sub_domains = ['es.reverd.com', 'fr.reverd.com'];

if (empty($_SERVER['DOCUMENT_ROOT'])) {
    $ROOT_DIR = $_SERVER['HOME'] . '/public_html';
} else {
    if (in_array($http_host, $sub_domains)) {
        $ROOT_DIR = $_SERVER['HOME'] . '/' . $http_host;
    } else {
        $ROOT_DIR = $_SERVER['DOCUMENT_ROOT'];
    }
}

3. 检查服务器重定向规则

Apache环境(.htaccess)

如果主站的.htaccess有强制跳转到app目录的规则,需要在规则中排除子域名:

# 排除子域名,避免被主站规则影响
RewriteCond %{HTTP_HOST} !^es\.reverd\.com$
RewriteCond %{HTTP_HOST} !^fr\.reverd\.com$
# 原主站跳转到app目录的规则
RewriteRule ^(.*)$ /app/$1 [L]

或者在每个子域名的目录下创建独立的.htaccess,覆盖主站规则。

Nginx环境

为每个子域名单独配置server块,指定正确的根目录和索引文件,避免继承主站的重定向规则:

server {
    listen 80;
    server_name es.reverd.com;
    root /home/user/es.reverd.com;
    index index.php index.html;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

4. 清除缓存

修改配置后,清除浏览器缓存、服务器端缓存(如OPcache、Redis),确保新配置立即生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 03:05:07