IIS 重写 url

Posted

技术标签:

【中文标题】IIS 重写 url【英文标题】:IIS rewriting url 【发布时间】:2013-06-16 06:01:08 【问题描述】:

我不知道如何通过 url 重写来解决这个问题:

遵循这种模式的网址

app/(.*)

应该被重定向到 app/index.cshtml

然而app文件夹包含子文件夹、js文件和html文件等资源。这些应该被忽略,不应该进行重定向。

我是这样做的:

 <rewrite>
  <rules>
    <rule name="Rule 1" stopProcessing="true">
      <match url="app/(.*/.js)" />
      <action type="None" />
    </rule>
    <rule name="Rule 2">
      <match url="app/(.*)" />
      <action type="Rewrite" url="app/index.cshtml" />
    </rule>

  </rules>
</rewrite>

我现在只尝试排除 js 文件,但是当我浏览到 app/someurl 时,我收到一个错误,因为其中一个 js 文件无法加载。我认为这是因为第一条规则不起作用。

你能帮忙吗?

【问题讨论】:

在什么情况下应该忽略重定向?仅在子文件夹中并请求 js 文件或 html 文件时? 在 app 文件夹和子文件夹中请求 js 文件和 html 文件时应忽略重定向 【参考方案1】:

这就是我最终做的:

<rule name="Rule1">
      <match url="(.*)" />
      <conditions>
        <add input="REQUEST_FILENAME" matchType="IsFile" negate="true" />
        <add input="REQUEST_FILENAME" matchType="IsDirectory" negate="true" />
        <add input="URL" negate="true" pattern="\.axd$" />
        <add input="URL" negate="true" pattern="\.jpg$" />
        <add input="URL" negate="true" pattern="\.gif$" />
        <add input="URL" negate="true" pattern="\.png$" />
        <add input="URL" negate="true" pattern="\.css$" />
        <add input="URL" negate="true" pattern="\.ico$" />
        <add input="URL" negate="true" pattern="\.cur$" />
        <add input="URL" negate="true" pattern="\.js$" />
        <add input="URL" negate="true" pattern="\.xml$" />
        <add input="URL" negate="true" pattern="\.svg$" />
        <add input="URL" negate="true" pattern="\.ttf$" />
        <add input="URL" negate="true" pattern="\.eot$" />
        <add input="URL" negate="true" pattern="\.woff$" />
        <add input="URL" negate="true" pattern="\.html$" />
      </conditions>
      <action type="Rewrite" url="app/index.cshtml" />
    </rule>

【讨论】:

很确定如果您只保留前两个条件,它应该可以按预期工作。

以上是关于IIS 重写 url的主要内容,如果未能解决你的问题,请参考以下文章

IIS5.1设置URL重写?

IIS URL重写

如何配置iis rewrite模块的url重写规则

关于IIS7 URL重写的问题

使用 IIS 7 重写模块重写 & 符号 URL

url重写,IIS需要这么配置,~/aa.aspx?id=1变成~/aa_1/