如何配置DDEV实现子目录Drupal项目本地同路径访问
DDEV本地配置子目录运行Drupal9的操作步骤
1. 对齐本地目录结构
完全和生产环境保持一致,避免路径逻辑差异:
- 本地DDEV项目根目录对应生产的
www目录,存放composer.json、/vendor、/tmp等非公共访问文件 - 项目根目录下创建
maresmuseum子目录,对应生产的公共访问根,存放Drupal核心的index.php、core、modules、themes、sites等所有公共web文件
2. 修改DDEV核心配置
编辑项目下的.ddev/config.yaml文件,调整以下参数:
# web服务文档根设为项目根,和生产环境www目录对应 docroot: "" # 配置预期的本地访问域名 additional_fqdns: - example.local # 其余参数(PHP版本、数据库版本等)按Drupal9要求按需配置即可
3. 配置URL重写规则
根据使用的web服务类型二选一配置:
- 若使用DDEV默认的Nginx:在
.ddev/nginx/目录下新建location.conf文件,写入子目录重写规则location /maresmuseum { try_files $uri $uri/ /maresmuseum/index.php?$query_string; } - 若使用Apache:无需额外编写配置,保留
maresmuseum目录下Drupal官方自带的.htaccess文件即可,DDEV默认开启目录级配置读取权限,会自动加载重写规则。
4. 调整Drupal站点配置
编辑maresmuseum/sites/default/settings.php文件,添加基础路径配置,保证所有内链自动带上路径前缀:
// 配置站点基础URL $settings['base_url'] = 'https://example.local/maresmuseum'; // 私有文件路径和生产对齐,指向项目根下的对应目录 $settings['file_private_path'] = '../tmp/private';
5. 生效配置
依次执行以下命令让所有配置生效:
# 重启DDEV服务加载新配置 ddev restart # 清除Drupal全站缓存 ddev drush cr
配置完成后直接访问https://example.local/maresmuseum即可打开站点首页,所有内页、静态资源路径都会自动带上/maresmuseum前缀,和生产环境路径规则完全一致。
内容的提问来源于stack exchange,提问作者donbuche
相关产品推荐
相关产品推荐

