IIS7 правило перезаписи, которое заставляет строчные буквы для указанных страниц в домене
Я пытаюсь создать правило перезаписи IIS7, которое принудительно вводит строчные буквы для указанных страниц, чтобы можно было переопределять чувствительные к регистру входящие ссылки на мой сайт, чтобы избежать дублирования контента Google по URL-адресам, таким как /Contact и /contact. Я нашел правило, которое работает хорошо, за исключением того, что оно включает в себя все страницы в домене, а затем вы можете указать страницы для исключения.
<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 ответа
<rewrite>
<rules>
<rule name="LowerCaseRule1" stopProcessing="true">
<match url="[A-Z]" ignoreCase="false" />
<action type="Redirect" url="{ToLower:{URL}}" />
</rule>
</rules>
</rewrite>
Как это:
<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).