将包罗万象的 RewriteRule 与 PhysicalFileSystem 相结合

Combine catch-all RewriteRule with PhysicalFileSystem

我正在 Angular 2 后端项目的 Angular 2 前端工作。在这个项目中,我配置了一种指向我的 dist 文件夹的 wwwroot(感谢 )。

但由于它是一个 Angular 2 项目,我还将所有内容重定向到 index.html 页面

    <rule name="AngularJS" stopProcessing="true">
      <match url="[a-zA-Z]*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
        <add input="{REQUEST_URI}" pattern="^/oauth" negate="true" />
      </conditions>
      <action type="Rewrite" url="/" />
    </rule>

现在我的问题是,由于我添加了 PhysicalFileSystem,所以我无法再检索我的捆绑文件。我正在请求 main.bundle.js(位于 dist/main.bundle.js),由于文件系统,它应该被正确检索,但对我来说不幸的是,它被 RewriteRule 捕获并且它只是呈现 index.html页。

如何确定它的优先级?

长话短说;博士 将所有内容重定向到 index.html,但在 dist 下也有一个逻辑根文件夹。希望我的服务器从 dist 检索所有内容,但它属于 RewriteRule,因为它实际上不存在。

对于我们遇到同样问题的那些人,问题只是因为这些文件实际上并不存在,对它们的每个请求都被重定向到 index.html

为了解决这个小问题,我只是在我的 RewriteRule 中添加了一个小例外来处理对静态文件的请求,现在我的系统可以正常工作了!

<add input="{REQUEST_URI}" pattern="^.*\.(jpg|css|js|gif|png|eot|ttf|woff)$" negate="true" />