Модуль перезаписи URL-адресов IIS некодирует строку запроса

У нас есть действительно простое правило перезаписи URL, которое в основном вызывает перенаправление 301 на другой домен:

<rewrite>
  <rule>
    <match url="^(default.aspx)?$" />
    <action type="Redirect" url="https://some.other.domain.com" />
  </rule>
</rewrite>

К сожалению, когда встречается такой URL:

http://original.domain.com/?returnUrl=https%3A%2F%2Fsome.url%2F

URL-адрес перенаправления выглядит следующим образом:

https://some.other.domain.com/?returnUrl=https://some.url/

Обратите внимание, как теряется кодировка URL.

Это ошибка в модуле перезаписи URL? Если да, то как можно обойти это?


person Jacob    schedule 19.07.2012    source источник


Ответы (1)


Я понял. В правиле перезаписи указан только частичный URL-адрес перенаправления. Кодировка строки запроса теперь сохраняется, когда я изменил это:

<action type="Redirect" url="https://some.other.domain.com"/>

...к этому:

<action type="Redirect" url="https://some.other.domain.com/"/>

(обратите внимание на косую черту в конце)

person Jacob    schedule 19.07.2012