AngularJS Umbraco 内的 SPA

AngularJS SPA within Umbraco

我有一个 Umbraco 6.4 网站,我现在正试图在该网站下放置一个 AngularJS 2 SPA。

Umbraco:/

Angular: /appname

我的问题是由 Umbraco 完成的路由。由于 Umbraco 处理所有路由到根级别,当 Angular 应用程序刷新时: /appname/apage 我得到一个 404 - Not Found.

我在 UrlRewriting.config 中添加了 URL 重写,但是我这样做的方式是目标 url 始终是 index.html 文件。

<add name="myapp" virtualUrl="^~/myapp/*" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/myapp/index.html" ignoreCase="true" />

我希望能够做的是定义一个重写,它让我在路径以 /myapp/.

开头时覆盖 Umbraco 路由

我已阅读 this 博客 post,但它与我的问题并没有真正的关系,因为我构建 SPA 的方式与 Umbraco 没有任何关系。另外,我必须将 Umbraco 作为根目录,因此我也不能依赖 IIS 为我做这件事。

如果有人能为我指明方向,那就太好了。谢谢

对于可能有类似问题的任何其他人:

我可以通过将 web.config 添加到 /appname 目录并添加以下配置来解决此问题。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <system.webServer>
      <rewrite>
         <rules>
            <rule name="ruleName" stopProcessing="true">
               <match url=".*" />
               <conditions logicalGrouping="MatchAll">
                  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
               </conditions>
               <action type="Rewrite" url="/myapp/" />
            </rule>
         </rules>
      </rewrite>
      <defaultDocument enabled="true">
         <files>
            <clear />
            <add value="index.html" />
         </files>
      </defaultDocument>
   </system.webServer>
</configuration>