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

配置IIS重写规则实现Umbraco+Vue.js SPA路由(排除/umbraco)

解决Umbraco + Vue SPA的IIS重写规则问题

我来帮你搞定这个路由重写的问题,让Vue能完美接管Umbraco的SPA路由~ 先给你梳理下核心问题:你的原规则踩了个小坑——IIS重写模块处理的是域名后的相对路径,不需要在match url里写完整域名(http(s)://、www这些),而且还要注意排除静态资源,不然Vue打包后的js、css会加载失败。

下面是调整后的完整可用规则:

<rewrite>
  <rules>
    <!-- 优先放行Umbraco后台路径,不做重写 -->
    <rule name="Skip Umbraco Admin" stopProcessing="true">
      <match url="^umbraco(/.*)?$" />
      <action type="None" />
    </rule>
    <!-- 所有非Umbraco、非静态资源的请求,重写到指定模板 -->
    <rule name="SPA Route Rewrite" stopProcessing="true">
      <match url=".*" />
      <conditions logicalGrouping="MatchAll">
        <!-- 排除真实存在的文件(比如Vue打包后的js、css、图片) -->
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <!-- 排除真实存在的目录 -->
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="/?alttemplate=test" appendQueryString="true" />
    </rule>
  </rules>
</rewrite>

规则细节拆解:

  • Skip Umbraco Admin规则:专门拦截所有以umbraco开头的路径,匹配后直接停止后续规则处理,保证Umbraco后台能正常访问,不会被Vue路由干扰。
  • SPA Route Rewrite规则:
    • <match url=".*" />匹配所有请求路径
    • 条件里的两个negate="true"是关键:确保真实存在的静态文件和目录不会被重写,避免Vue的静态资源加载失败
    • 重写动作直接指向站点根路径,并带上alttemplate=test参数,让Umbraco渲染你指定的模板,Vue就能在这个模板里接管所有前端路由了

补充说明:

如果你的Vue项目有特定的静态资源前缀(比如/assets/),还可以在条件里再加一条排除规则,进一步精准控制:

<add input="{REQUEST_URI}" pattern="^/assets/.*$" negate="true" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:50:27