На моем сервере Windows 2012 я установил модуль перезаписи URL-адресов в IIS. Я следил за этим руководством для перенаправления не-www на www в web.config: http://www.surfingsuccess.com/asp/iis-url-rewrite.html#.VF6GBid0yAUПереадресовать не WWW в WWW (за исключением одного особого субдомена)
До сих пор так хорошо!
Единственная проблема заключается в том, что мы также размещаем субдомен «api.example.com». Этот API перестает работать, когда я применяю код в web.config.
Мой вопрос: что не так с кодом ниже? Почему субдомен перестает работать, когда я пытаюсь перенаправить не-www на www, кроме «api.example.com»?
<rewrite>
<rules>
<rule name="CanonicalHostNameRule1">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.example\.com$" negate="true" />
<add input="{HTTP_HOST}" pattern="^api\.example\.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.example.com/{R:1}" />
</rule>
</rules>
</rewrite>
К сожалению, это не помогло, api.example.com все равно перестает работать, когда я добавляю код в web.config (example.com). Я думаю, что это довольно странно, так как api.example.com - это один сайт в IIS, а example.com - еще один сайт в IIS. Когда я переписываю URL пользователя на одном сайте (example.com), почему это влияет на другой сайт (api.example.com). Они также работают в отдельных пулах приложений. –
Можно ли создать правило, которое перенаправляется только на www.example.com, если вход не начинается с www. или api.? –
Вы добавляете правило Rewrite на уровне WWWROOT \ web.config? У вас есть что-то еще, что может мешать? Я предлагаю попробовать Failed Request Tracing, чтобы просмотреть журнал. Это точно определит, где проблема. – bdoshi