Drupal 10.6.1文件链接自动插入index.php失效,如何解决?
Drupal 10.6.1 文件链接带index.php无法访问的排查方案
Clean URLs配置与服务器重写规则检查
尽管节点链接无论带不带index.php都能访问,但Clean URLs的生效逻辑可能存在异常:- 进入
admin/config/search/clean-urls,确认Clean URLs已启用,若已启用,重新保存该页面触发路由重建。 - 检查服务器重写规则:Apache需确保
.htaccess中保留了静态文件直接访问的规则(默认规则会跳过sites/default/files等目录的index.php转发);Nginx需确认配置中对/sites/default/files/*的请求直接返回文件,而非转发到index.php。若规则被修改或缺失,会导致文件链接被强制追加index.php。
- 进入
文件系统基础URL校验
- 进入
admin/config/media/file-system,确认「公共文件系统的基础URL」为/sites/default/files(不含index.php),若配置正确,重新保存并清除缓存。 - 检查
settings.php中是否存在$settings['file_public_base_url']的手动配置,确保其值为正确的相对/绝对路径,无index.php前缀。
- 进入
缓存与路由重建
- 所有链接均带index.php,通常是Drupal未正确识别Clean URLs状态导致的。执行全缓存清除:使用
drush cr命令,或进入admin/config/development/performance点击「清除所有缓存」。 - 验证Apache的
mod_rewrite模块是否启用,Nginx的Drupal路由转发规则是否正确配置。
- 所有链接均带index.php,通常是Drupal未正确识别Clean URLs状态导致的。执行全缓存清除:使用
自定义代码与第三方扩展排查
- 临时切换至Olivero默认主题,禁用所有非核心模块,测试文件链接是否恢复正常。若正常,逐个启用模块/主题定位问题源。
- 检查是否存在自定义模块使用
hook_file_url_alter()等钩子修改文件URL,导致追加index.php。
内容的提问来源于stack exchange,提问作者Paul Tomblin
相关产品推荐
相关产品推荐

