Я писал этот вопрос и в процессе, это заставило меня думать немного сложнее, и я сам ответил сам, хотя я до сих пор не совсем понимаю, почему он решил это.IIS 7 Url Rewriting и две домены
У меня есть учетная запись на общем хосте с зарегистрированными доменами. Я использую стек 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, потому что второй запрос автоматически выдается для завершающего косая черта, и происходит 404.
Итак, я обновил действие быть:
<action type="Rewrite" url="/site2/{R:1}/" />
Это, кажется, решен, но почему не IIS 7 Теперь выплюнуть www.domain2.com/junk2/default.aspx/? Как он знает, что нельзя добавить конечную косую черту к расширению документа?