Краткий ответ:
Используйте переменную сервера PATH_INFO вместо REQUEST_URI, так как вы не хотите включать строку запроса в соответствие.
Полное объяснение:
Это меня уже поразило - в основном это тонкость использования Rewrite Maps в модуле перезаписи URL IIS.
В вашем случае SiteMapEngine будет статическим списком URL-значений ключей:
<rewrite>
<rewriteMaps>
<rewriteMap name="SiteMapEngine" defaultValue="">
<add key="/page/abc/" value="/index.cfm?page=abc" />
...
</rewriteMap>
</rewriteMaps>
...
</rewrite>
Условие {SiteMapEngine: {REQUEST_URI}} в вашем правиле проверяет, есть ли ключ в этой карте перезаписи, соответствующий серверной переменной REQUEST_URI:
{REQUEST_URI} = /page/abc/?param1=111
Обратите внимание, что эта переменная содержит строку запроса - поэтому ей не удается найти соответствующий ключ.
Вместо этого используйте переменную сервера PATH_INFO, которая является эквивалентом REQUEST_URI, но без строки запроса :
{PATH_INFO} = /page/abc/
Итак, правильное правило:
<rule name="Rewrite rule1 for SiteMapEngine">
<match url=".*" />
<conditions>
<add input="{SiteMapEngine:{PATH_INFO}}" pattern="(.+)" />
</conditions>
<action type="Rewrite" url="{C:1}" />
</rule>