【发布时间】:2015-09-03 23:42:35
【问题描述】:
我正在尝试使用 Web API RESTful 后端设置单页应用程序。我使用“OWIN WebAPI SPA 模板”来启动我的项目。此模板默认将静态文件提供给解决方案根目录中的 public/ 文件夹。我想支持html5 url,IE。 localhost/madeUpPath 应该点击 index.html 页面。为此,我在 Web.config 文件中设置了一个重写规则:
<system.webServer>
<rewrite>
<rules>
<rule name="Main Rule" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_URI}" pattern="api/" ignoreCase="true" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>
我遇到的问题是,由于静态文件位于 /public/ 中,{REQUEST_FILENAME} 认为该文件是相对于 / 并且 url localhost/main.css 被重写为 localhost/
我已尝试将规则更改为:
<add input="public/{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="public/{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
但这没有用。我怎样才能达到我想要的结果?谢谢。
编辑:我发现了一些似乎有效的东西,但并不是我想要的。
<rewrite>
<rules>
<rule name="Main Rule" stopProcessing="true">
<match url="([a-zA-Z0-9-_.\/]+\.(css|js|less|json|jpeg|jpg|png|gif|svg|xml|html))$" />
<action type="Rewrite" url="/public/{R:0}" />
</rule>
<rule name="Second Rule" 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="/" />
</rule>
</rules>
</rewrite>
【问题讨论】:
标签: asp.net angularjs web-config rewrite owin