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

NGINX如何优先将/app子目录作为静态资源服务,不触发其余Drupal配置规则?

解决方案

你只需要给/app的location规则添加^~前缀匹配修饰符即可,该修饰符会让NGINX匹配到/app开头的请求后,直接终止后续所有正则location匹配流程,完全不会触发Drupal的全局静态资源规则,也不需要修改原有Drupal配置。

完整配置如下:

location ^~ /app {
    alias /other/folder/app;
    index index.html;
    # 适配SPA前端路由,刷新子路径不会出现404
    try_files $uri $uri/ /app/index.html;

    # 可选:单独给/app下的静态资源配置缓存,规则可自定义
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }
}

配置说明

  • ^~修饰符优先级高于正则location,匹配成功后就不会执行后续的Drupal静态资源规则,完全满足你不改动原有配置、隔离/app路径逻辑的需求
  • 新增的try_files规则是SPA子目录部署的必备配置,解决前端路由刷新404的问题
  • 如果你不需要单独给/app下的静态资源设置缓存,也可以删掉块内的静态资源location规则,不影响核心隔离逻辑

注意事项

前端打包SPA应用时,需要将资源公共路径(publicPath/base)设置为/app/,否则会出现静态资源加载路径错误的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:36:01