Я перехожу с IIS6 с ISAPI_Rewrite на IIS7, используя их модуль Rewrite. У меня есть "красивый" URL, который выглядит так: / Shop / Q% 26A. Конечно, это закодировано в вопросах и ответах. IIS7, похоже, это не нравится. Любые идеи?
Я уже установил doubleEscaping = true, потому что я использую «+» вместо «% 20» для пробелов. Кажется, я ничего не могу найти в Интернете об этом.
Вау, так получилось, что Руслан из команды IIS помогал мне с почти идентичной проблемой в течение последних двух дней.
IIS (HTTP.sys) проанализирует ваш URL-адрес - например, http: // сайт /////// каталог //// файл обслуживает тот же контент, что и http: // сайт / каталог / файл. Он оставит строку запроса в покое, но на данный момент, поскольку мы используем красивые URL-адреса, значение еще не находится в строке запроса!
Незакодированный URL-адрес хранится в переменной сервера с именем UNENCODED_URL.. Вы можете сделать что-то вроде этого, чтобы передать это значение в переменную захвата:
<rule name="something" stopProcessing="true">
<match url=".*" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{URL}" negate="true" pattern="^/index\.php" ignoreCase="false" />
<add input="{QUERY_STRING}" pattern="^$" ignoreCase="false" />
<add input="{UNENCODED_URL}" pattern="/(.*)" />
</conditions>
<action type="Rewrite" url="/index.php?title={C:1}" appendQueryString="true" />
</rule>
Затем вы сопоставляете его с обратная ссылка на условие.