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

Drupal虚拟主机子目录部署仅根URL出现Apache重定向循环问题

解决Drupal子目录部署下的ERR_TOO_MANY_REDIRECTS问题

这种子目录部署的Drupal重定向循环问题我之前在多VHost架构里碰到过几次,结合你的场景(稳定运行一年后突发首页循环),可以按以下步骤逐步排查:

1. 确认Drupal的基础URL配置

  • 如果你还能访问Drupal后台(比如直接输入subdomain.example.com/drupal/admin),进入配置 > 系统 > 站点信息,检查“默认URL”是否完全匹配实际访问的地址(包括协议、域名和子目录,比如https://subdomain.example.com/drupal)。
  • 如果后台无法访问,直接修改站点根目录下sites/default/settings.php文件,确保$base_url变量设置正确:
    $base_url = 'https://subdomain.example.com/drupal'; // 替换成你的实际地址
    
    这个配置很容易在模块更新或部署时被意外覆盖,是重定向循环的常见原因。

2. 检查Web服务器的重写规则

Apache环境

  • 打开Drupal根目录下的.htaccess文件,确认RewriteBase设置为你的子目录路径:
    RewriteBase /drupal/
    
  • 同时检查对应的VHost配置,确保开启了AllowOverride All,否则.htaccess里的重写规则不会生效:
    <Directory /var/www/html/subdomain.example.com/drupal>
      AllowOverride All
    </Directory>
    

Nginx环境

  • 检查VHost配置中的location块,确保重写规则正确指向Drupal的index.php,并且子目录路径匹配:
    location /drupal {
      root /var/www/html/subdomain.example.com;
      try_files $uri $uri/ /drupal/index.php?$query_string;
      rewrite ^/drupal/(.*)$ /drupal/index.php?q=$1 last;
    }
    
    注意不要和其他VHost的规则冲突,尤其是强制HTTPS的全局规则。

3. 排查HTTPS/SSL相关重定向

  • 如果最近修改过SSL配置(比如新增了强制HTTPS的规则),要确保规则不会在子目录下形成循环。比如Apache中的强制HTTPS规则应该避免重复重定向:
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
  • 同时确认Drupal后台的“默认URL”使用的是和访问一致的协议(HTTP/HTTPS),混合协议很容易触发重定向循环。

4. 清除缓存与Cookie

  • 浏览器端:清除当前站点的Cookie和缓存(尤其是__Secure-SSID这类会话Cookie),旧的重定向缓存会导致循环持续。
  • Drupal端:如果能访问后台,进入配置 > 开发 > 性能点击“清除所有缓存”;如果不行,直接删除sites/default/files/cache目录下的所有文件,或者用Drush命令:
    drush cache:rebuild
    

5. 回滚最近的改动

因为你的架构已经稳定运行一年,突发问题大概率和最近的操作有关:

  • 有没有更新Drupal核心、模块或主题?尝试回滚到上一个稳定版本。
  • 有没有修改过VHost配置或服务器的重写规则?恢复之前的配置试试。
  • 有没有部署过新的代码?检查代码变更中是否影响了URL或重定向逻辑。

内容的提问来源于stack exchange,提问作者Marvin WordWeaver Parsons

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:32:02