IIS7 Url Rewrite - почему Redirect работает, а Rewrite - нет? - PullRequest
3 голосов
/ 02 марта 2012

Что я хочу сделать, это переписать субдомены в основное приложение и добавить указанный субдомен в строку запроса.Например, «http://a.main.com" следует переписать на» http://www.main.com/default.aspx?SD=a".

Вот мое правило перезаписи:

<rule name="SubDomain" stopProcessing="true">
  <match url="^$" />
  <conditions trackAllCaptures="false">
    <add input="{HTTP_HOST}" pattern="^([A-Za-z0-9]+)\.main\.com$" />
  </conditions>
  <action type="Rewrite" url="http://www.main.com/default.aspx?SD={C:1}" logRewrittenUrl="false" />
</rule>

Когда я перехожу в браузере на «http://a.main.com",, я получаю 404. Однако когдаВместо этого я изменяю правило на правило перенаправления, оно перенаправляет правильно. Тот факт, что оно работает в режиме перенаправления, но не в режиме перезаписи, меня сильно смущает. Что происходит?

К вашему сведению мои хозяеваФайл настроен таким образом, чтобы www.main.com и a.main.com указывали на 127.0.0.1. Единственная привязка веб-сайта в IIS7 имеет свойство Host Name, установленное на 127.0.0.1.

1 Ответ

3 голосов
/ 02 марта 2012

"http://www.main.com/" часть свойства url узла необходимо удалить. Вот как это выглядит сейчас:

<action type="Rewrite" url="default.aspx?SD={C:1}" logRewrittenUrl="false" />

Это работает.

...