iis 7.5 перезапись URL - не обрабатывает символ процента '%' - PullRequest
1 голос
/ 24 марта 2011

Я импортировал правила из IIRF в IIS URL Rewrite, и большинство из них работало нормально.Я только что заметил, что в некоторых URL-адресах есть символы процента (пытаясь перенаправить некоторые плохие входящие ссылки с символами, закодированными в процентах).Регулярное выражение, кажется, не работает, когда процент находится там, поэтому я предполагаю, что он пытается интерпретировать это как команду или что-то в этом роде.Не можете найти какую-либо документацию по этому вопросу, кто-нибудь знает?

Ответы [ 2 ]

1 голос
/ 24 июля 2013

Принятый ответ не работал в моем случае, но я обнаружил другой способ настройки правила перезаписи. Это сделает редирект 301.

Запрошенный URL: http://www.shuttercontractor.com/m/vinyl-%E2%80%8Bshutters.aspx
Целевой URL: http://www.shuttercontractor.com/m/vinyl-shutters.aspx

<rule name="301 Redirect to vinyl shutters category" stopProcessing="true">
    <match url="." ignoreCase="false" />
    <action type="Redirect" redirectType="Permanent" url="m/vinyl-shutters.aspx" />
    <conditions>
        <add input="{UNENCODED_URL}" pattern="m/vinyl-%[Ee]2%80%8[Bb]shutters\.aspx" ignoreCase="false" />
    </conditions>
</rule>

По сути, сопоставление будет работать с любым URL-адресом, и мы используем условие с серверной переменной UNENCODED_URL, чтобы обеспечить соответствие шаблона перед перенаправлением.

0 голосов
/ 24 марта 2011

говорит о том, что правила перезаписи уже отменяют кодировку URL, поэтому он больше не видит% 3E как таковой, а вместо этого как «<» .. так что использование> вместо% 3E помогает.Теперь, чтобы исправить кучу URL.Argh.

Редактировать:

Кроме того, если вы вручную отредактируете файл web.config (вместо использования редактора пользовательского интерфейса), вам нужно будет использовать & lt;для <символов.Вероятно, лучше всего использовать пользовательский интерфейс, чтобы избежать путаницы.</p>

...