Я пытался заставить механизм перезаписи URL IIS работать для определенного случая исходящих URL.Я пытаюсь сделать строчными все URL-адреса, кроме тех, которые соответствуют этим критериям:
- Исходящая ссылка с хэш-тегом: page.aspx # q = MixedCaseParameter
- Уже переписанный дружественный исходящий URL-адрес с идентификатором продукта со смешанным регистром и описанием продукта: / shopping / product / A12345 / Mixed-Case-Product-Description
- Исходящая ссылка с JavaScript: inHREF вместо URL: javascript: __ doPostBack ('control', 'action')
Я могу выполнять его части, но не все в одном выражении,но я не могу получить все три.Вот что у меня сейчас есть:
([A-Z]+)((?:(?!app\.aspx#q).)|(?:^(?!javascript:).))
И настройки в web.config:
<rewrite>
<!-- other rules excluded for clarity -->
<outboundRules rewriteBeforeCache="true">
<rule name="Outbound lowercase" preCondition="IsHTML" enabled="true">
<match filterByTags="A" pattern="([A-Z]+)((?:(?!app\.aspx#q).)|(?:^(?!javascript:).))" ignoreCase="false" />
<action type="Rewrite" value="{ToLower:{R:0}}" />
</rule>
<!-- Example friendly outbound rewrite rule -->
<rule name="Rewrite Product Outbound" preCondition="IsHTML" enabled="true" stopProcessing="true">
<match filterByTags="A" pattern="product\.aspx\?cat=catalogname&amp;pid=([0-9a-zA-Z\-]+)&amp;pdisplayname=([0-9a-zA-Z\-]+)" ignoreCase="true" />
<action type="Rewrite" value="/shopping/product/{R:1}/{R:2}" />
</rule>
<preConditions>
<preCondition name="IsHTML" logicalGrouping="MatchAny">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
<!-- Shopping Outbound Rules End -->
</outboundRules>
</rewrite>
Спасибо.