IIS7重写规则强制域的指定页面的小写

时间:2012-01-19 10:55:59

标签: asp.net iis-7 web-config

我正在尝试创建一个IIS7重写规则,强制指定页面的小写,以便我可以覆盖对我的网站的区分大小写的入站链接,以避免像/ Contact和/ contact这样的网址上的Google重复内容。 我找到了一个运行良好的规则,除了它包含域中的所有页面,然后您可以指定要排除的页面。

<rule name="Lower Case Rewrite" enabled="true" stopProcessing="true">
<match url=".*[A-Z].*" ignoreCase="false" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{URL}" pattern="/ordering/shoppingcart/" negate="true" />
</conditions>
<action type="Redirect" url="{ToLower:{R:0}}" redirectType="Permanent" />
</rule>

是否可以反转规则,以便除了在规则中指定的页面之外,它不适用于小写。 我想这样做的原因是,当规则实施且网站太大而无法检查所有页面和处理程序调用时,网站的管理员,购物车和其他部分都会失败。

任何帮助都会很棒!

2 个答案:

答案 0 :(得分:3)

<rewrite>
    <rules>
        <rule name="LowerCaseRule1" stopProcessing="true">
            <match url="[A-Z]" ignoreCase="false" />
            <action type="Redirect" url="{ToLower:{URL}}" />
        </rule>
    </rules>
</rewrite>

答案 1 :(得分:1)

像这样:

<rule name="Lower Case Rewrite" enabled="true" stopProcessing="true">
  <match url=".*[A-Z].*" ignoreCase="false" />
  <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
    <add input="{URL}" pattern="/content/" />
    <add input="{URL}" pattern="/content2/" />
  </conditions>
<action type="Redirect" url="{ToLower:{R:0}}" redirectType="Permanent" />
</rule>

使用MatchAny对条件进行分组,然后添加规则应适用的所有模式(但省略negate属性)。