Как использовать web.config для перенаправления на строку запроса в Windows Server 2008 R2?

У меня есть перенаправление, которое я хочу сделать с помощью web.config на сервере IIS 7.5 под управлением Windows Server 2008 R2. Я хотел бы просто создать ярлык URL для другого URL с очень длинной строкой запроса:

www.example.com/redirect-> www.example.com/long_url.aspx?key1=value1&key2=value2

Когда я добавляю следующее правило перезаписи в web.config, оно выдает 500 внутренних ошибок сервера:

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="^redirect$" stopProcessing="true">
                    <match url="^redirect$" />
                    <action type="Redirect" url="/long_url.aspx?key1=value1&key2=value2" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Что мне нужно изменить, чтобы заставить это работать?

1 ответ

Решение

При добавлении строки запроса в действие правила перезаписи вы должны экранировать все "?" и символы "&" в URL.

  • "?" = "& # 63;"
  • "&" = "& amp;"

Следующий код будет работать:

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="^redirect$" stopProcessing="true">
                    <match url="^redirect$" />
                    <action type="Redirect" url="/long_url.aspx&#63;key1=value1&amp;key2=value2" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
Другие вопросы по тегам