【问题标题】:Combine catch-all RewriteRule with PhysicalFileSystem将包罗万象的 RewriteRule 与 PhysicalFileSystem 相结合
【发布时间】:2016-12-19 14:25:36
【问题描述】:

我正在处理 Angular 2 前端项目的 ASP.NET 4.5 后端项目。在这个项目中,我配置了一种wwwroot(感谢this tutorial)指向我的dist 文件夹。

但由于它是一个 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 页面。

我怎样才能确定这个的优先级?

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

【问题讨论】:

    标签: asp.net web-config


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-10-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 2011-02-12
      • 2011-09-09
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      相关资源
      最近更新 更多