重写IIS Url的应用程序根除外

时间:2014-07-18 00:51:58

标签: regex iis-7 url-rewriting

我讨厌正则表达式并且讨厌我,这就是问题所在:

我正在处理臭名昭着的Angular路由和遗留浏览器(IE9 +),我已经解决了所有问题,但是在IE中,应用程序的根URL需要正斜杠(并且只有根)。与此同时,我需要从其他非root请求中删除所有正斜杠,如此借用代码段所示:

<rule name="Remove trailing slash" stopProcessing="true">
   <match url="(.*)/$" />
   <conditions>
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
   </conditions>
   <action type="Redirect" redirectType="Permanent" url="{R:1}" />
</rule>

这非常有效,我只是不知道如何获得这样的请求:http://localhost/jumpstart

使用尾部斜杠重写为:http://localhost/jumpstart/,同时为非应用程序根请求保留其他规则。

我认为*\/jumpstart(?!\/)的匹配就足够了,但它无法正常工作。

任何帮助都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

您应该可以使用以下内容:

<rule name="Add trailing slash to jumpstart" stopProcessing="true">
  <match url="(.*[^/])$" />
  <conditions>
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    <add input="{REQUEST_FILENAME}" pattern="(.*?)jumpstart$" negate="true" />
  </conditions>
  <action type="Redirect" redirectType="Permanent" url="{R:1}/" />
</rule>