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

如何将Drupal 8站点从子目录snew迁移至网站根目录?

将Drupal 8从子目录迁移到根目录的完整步骤

我来帮你一步步搞定把Drupal 8从snew子目录移到根目录的操作,步骤很清晰,按顺序来就不会出问题:

1. 提前准备:备份数据和文件

  • 先备份整个站点的数据库:可以用phpMyAdmin导出,或者用Drupal自带的备份模块,也可以用命令行执行:mysqldump -u [数据库用户名] -p [数据库名] > drupal_backup.sql(记得替换括号里的实际内容)。
  • 备份snew目录下的所有文件和文件夹,避免操作失误丢失数据。
  • 暂时把网站设为维护模式:登录Drupal后台,进入配置 > 维护模式,勾选“把网站置于维护模式”,这样访问者不会看到错误页面。

2. 移动文件到根目录

  • 通过FTP或者服务器的文件管理器,把snew目录里的所有内容(注意是文件夹里的文件,不是snew文件夹本身)移动到网站的根目录(通常是public_html、www或者html目录)。
  • 确认移动完成后,根目录下能看到sites、modules、themes这些核心文件夹,index.php也在根目录里。

3. 更新Drupal配置文件

  • 找到根目录下的sites/default/settings.php文件,打开编辑:
    • 检查$base_url变量,如果之前设置了$base_url = 'https://www.domain.com/snew';,把它改成$base_url = 'https://www.domain.com';(如果没设置过这个变量,可以不用改,Drupal会自动检测)。
    • 确认$settings['file_public_path']、$settings['file_private_path']这些路径是否正确,如果之前是绝对路径指向snew目录,现在要调整为根目录下的对应路径;如果是相对路径(比如'sites/default/files'),通常不用修改。

4. 更新数据库中的路径信息

Drupal数据库里存了很多带snew的路径,必须批量替换:

  • 登录phpMyAdmin,选择你的Drupal数据库,点击SQL标签,执行以下SQL语句(替换www.domain.com/snew为你的旧路径,www.domain.com为新路径):
UPDATE url_alias SET alias = REPLACE(alias, '/snew', '');
UPDATE node__field_image SET field_image_uri = REPLACE(field_image_uri, 'snew/', '');
UPDATE node__field_file SET field_file_uri = REPLACE(field_file_uri, 'snew/', '');
UPDATE users SET picture = REPLACE(picture, 'snew/', '');
UPDATE config SET data = REPLACE(data, 'snew/', '');
UPDATE config SET data = REPLACE(data, 'www.domain.com/snew', 'www.domain.com');

提示:不同站点可能有自定义字段表,如果有其他带路径的字段,需要自行判断添加对应的UPDATE语句。执行前一定要确认数据库备份完成!

5. 调整服务器配置(Apache/Nginx)

如果是Apache服务器:

  • 确保根目录下的.htaccess文件是从snew目录移过来的,Drupal的重写规则都在这个文件里。
  • 检查虚拟主机配置(如果有的话),把DocumentRoot指向网站根目录,比如原来的配置是:
DocumentRoot /var/www/html/snew

要改成:

DocumentRoot /var/www/html

然后重启Apache服务:sudo systemctl restart apache2

如果是Nginx服务器:

  • 编辑Nginx的站点配置文件,把root指向根目录,同时调整重写规则。原来的配置可能是:
root /var/www/html/snew;
location / {
    try_files $uri $uri/ /snew/index.php?$query_string;
}

改成:

root /var/www/html;
location / {
    try_files $uri $uri/ /index.php?$query_string;
}

然后重启Nginx服务:sudo systemctl restart nginx

6. 清理缓存并测试

  • 登录Drupal后台,进入配置 > 性能,点击“清空所有缓存”。
  • 关闭维护模式,访问www.domain.com,测试各个页面、链接、图片是否正常显示,提交表单是否能正常工作。
  • 如果发现有遗漏的路径问题,可以再次检查数据库,或者用Drush工具执行缓存清理:drush cr(如果安装了Drush的话)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:24:01