Я думаю, что проблема в том, что $ 2 находится вне диапазона, поскольку у вас есть только одна группа в вашем RegEx.Попробуйте $ 1.
EDIT
Кроме того, возможно, строка запроса добавляется с другим символом '?'так что вам нужно убрать это из скобок.
Вам также понадобится дополнительная группа, чтобы правило совпадало с нашим без '?'.Примечание: теперь мы вернулись к 2 долларам в результате:)
<rewrite url="~/blog.aspx(\?(.+)?)?$"
to="~/hiddenFolder/blog.aspx?mode=default&$2"/>