Я писал этот вопрос, и в процессе этого он заставил меня подумать немного усерднее, и я сам ответил на него, хотя до сих пор не до конца понимаю, почему он решил это.
У меня есть учетная запись на общем хосте с 2 зарегистрированными доменами. Я использую стек Asp.Net для запуска нескольких вещей, таких как блог и другой сайт, который я планирую запустить в конце концов. Оба моих домена указывают на корень; первый - оригинал, который я использовал для регистрации, второй - указатель корневого домена, который я добавил. Вот как я хочу это вести себя:
Структура каталогов:
Root (www.domain1.com)
Root --\ Blog (www.domain1.com/blog)
Root --\ Site2 (should be directed here if www.domain2.com)
Root --\ Site2 --\ Junk (www.domain2.com/junk)
Прямо сейчас, если вы введете www.domain1.com или www.domain1.com/blog, это будет вести себя как положено, и я в порядке. Для www.domain2.com у меня настроено правило перезаписи следующим образом (из web.config):
<rule name="Domain2">
<match url="(.*)(/)?" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="(www\.)?domain2\.com" ignoreCase="false" />
</conditions>
<action type="Rewrite" url="/site2/{R:1}" />
</rule>
Это правило должно соответствовать любому пути, если хост - domain2.com, выбрать путь к запрашиваемому ресурсу и правильно отформатировать его. Поэтому, когда кто-то вводит www.domain2.com/junk/default.aspx, в IIS это разрешается до www.domain2.com/site2/junk/default.aspx, о котором пользователь даже не подозревает. в основном работает так, как объявлено, за исключением случаев, когда пользователь не вводит косую черту в подпапку. IE:
www.domain2.com (работает)
www.domain2.com/ (работает)
www.domain2.com/junk/ (работает)
www.domain2.com/junk (не работает!) IIS 7 теряет свой мозг здесь и форматирует его, как www.domain2.com/site2/junk, потому что 2-й запрос автоматически выдается для конечной косой черты, а 404 происходит.
Итак, я обновил действие так:
<action type="Rewrite" url="/site2/{R:1}/" />
Это, похоже, решило проблему, но почему IIS 7 теперь не выплевывает www.domain2.com/junk2/default.aspx/? Как он узнает, что не следует добавлять косую черту к расширению документа?