我正在尝试创建一个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>
是否可以反转规则,以便除了在规则中指定的页面之外,它不适用于小写。 我想这样做的原因是,当规则实施且网站太大而无法检查所有页面和处理程序调用时,网站的管理员,购物车和其他部分都会失败。
任何帮助都会很棒!
答案 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属性)。