如何调整Drupal9项目文件夹结构,实现直接通过项目名路径运行项目
解决Drupal9 Composer项目根目录直接访问的问题
你之前的操作破坏了Drupal Composer项目默认的路径映射关系和自动加载配置,才会导致无法正常运行。按以下两种方案操作即可:
方案1(推荐):调整Web服务器站点根目录配置
无需修改任何项目文件,不影响后续Composer更新、Drupal核心/扩展升级,是官方推荐的使用方式:
- 若使用Apache,修改站点的
DocumentRoot配置为/path/to/your/project_name/web,同步调整对应<Directory>段的路径为相同值,重启Apache后生效 - 若使用Nginx,修改server块内的
root配置为/path/to/your/project_name/web,重载Nginx配置后生效 - 若使用XAMPP、WAMP等本地集成环境,直接修改站点根目录指向到
project_name/web文件夹即可 - 若使用Drupal自带的临时开发服务器,在
project_name根目录下执行命令:php -S localhost:8000 -t web,直接访问localhost:8000即可正常运行
方案2:调整项目结构将Web入口移到根目录
如果确实要求项目根目录就是Web访问根目录,按以下步骤操作:
- 进入
project_name根目录,将web文件夹内部的所有文件和子文件夹剪切到project_name根目录,不需要移动vendor、composer.json等本来就在根目录的文件 - 打开根目录下的
composer.json,找到extra配置段,修改web-root路径和扩展安装路径配置:
"extra": { "drupal-scaffold": { "locations": { "web-root": "./" } }, "installer-paths": { "core": ["type:drupal-core"], "libraries/{$name}": ["type:drupal-library"], "modules/contrib/{$name}": ["type:drupal-module"], "profiles/contrib/{$name}": ["type:drupal-profile"], "themes/contrib/{$name}": ["type:drupal-theme"], "drush/Commands/contrib/{$name}": ["type:drupal-drush"], "modules/custom/{$name}": ["type:drupal-custom-module"], "themes/custom/{$name}": ["type:drupal-custom-theme"] } }
- 在项目根目录执行
composer dump-autoload重新生成自动加载文件 - 清理Drupal缓存:已安装Drush的情况下执行
drush cr,未安装Drush则手动删除sites/default/files/php/目录下的所有缓存文件 - 检查
sites/default/settings.php内的$settings['file_public_path']、$settings['file_private_path']等路径配置,若有基于web目录的相对路径,调整为对应根目录的路径即可
注意:调整完成后后续所有Composer安装、更新操作都可以正常执行,不需要再手动修改文件路径。
内容的提问来源于stack exchange,提问作者user3386779
相关产品推荐
相关产品推荐

