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

Drupal7多站点配置后仍连接同一数据库问题求助

问题根因
  • Drupal 7多站点目录命名规则不匹配访问路径
    你当前的访问地址格式是http://<宿主机IP>:18080/d和http://<宿主机IP>:18080/e,Drupal 7多站点默认的目录匹配逻辑会优先识别「访问IP+端口+路径后缀」的组合,你现有的ipaddress.d、ipaddress.e没有包含宿主机映射的18080端口,也没有匹配路径规则,导致两个访问请求最终都落到同一个站点的配置(默认兜底的default站点配置),所以读取了同一个数据库参数。
  • Apache配置存在冗余错误,未传递正确的路径上下文
    你当前的VirtualHost配置重复定义了DocumentRoot,且<Directory />指向服务器根目录属于不合理配置,Alias配置仅完成了路径映射到Drupal根目录,但没有保证Drupal能正确获取到请求的路径前缀用来匹配站点目录。
解决方案

步骤1:匹配Drupal多站点识别规则

两种方案二选一即可:

  • 方案A:直接按匹配规则重命名站点目录
    将ipaddress.d重命名为<宿主机IP>.18080.d,将ipaddress.e重命名为<宿主机IP>.18080.e,统一放到Drupal根目录的sites文件夹下即可。
  • 方案B:修改sites/sites.php添加显式映射
    打开Drupal根目录下的sites/sites.php(如果不存在就复制sites/default.sites.php重命名为sites.php),添加以下代码:
    $sites['<宿主机IP>.18080.d'] = 'ipaddress.d';
    $sites['<宿主机IP>.18080.e'] = 'ipaddress.e';
    
    无需修改原有站点目录名称即可生效。

步骤2:修正Apache配置

将现有VirtualHost配置替换为以下内容,删除冗余重复的配置项:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    
    <Directory /var/www/html>
            Options FollowSymLinks
            AllowOverride All
            Require all granted
    </Directory>

    Alias /d /var/www/html
    Alias /e /var/www/html

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

修改后重启Apache服务生效。

步骤3:验证配置

清空Drupal全站缓存后,分别访问两个站点,即可确认数据库连接已按配置区分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:54:03