Правило перезаписи IIS для перенаправления определенного URL домена на другой URL в одном домене
Я просто хочу, чтобы правило перезаписи IIS 7.5 перенаправляло http://www.domain.com/url1 на http://www.domain.com/url2 (тот же домен). Это может быть достигнуто путем:
<rule name="Redirect url" enabled="true" stopProcessing="true">
<match url="^url1" />
<action type="Redirect" url="http://www.domain.com/url2"
appendQueryString="false" redirectType="Permanent" />
</rule>
Тем не менее, этот веб-сайт прослушивает несколько доменов, поэтому вышеуказанное становится глобальным правилом для всех доменов. Как мне сделать это специально для domain.com? Попытался изменить URL соответствия и добавить условия, но не смог заставить его работать. Благодарю.
2 ответа
Я получил это работать так:
<rule name="Redirect url1" stopProcessing="true">
<match url="^url1$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(www.)?domain.com$" />
</conditions>
<action type="Redirect" url="http://www.domain.com/url2"
appendQueryString="false" redirectType="Permanent" />
</rule>
Используя ответ на этой странице, я смог настроить правило для себя. Я также добавил параметры запроса. Хотел опубликовать здесь, на случай, если это кому-нибудь поможет:
<!-- probably requires custom rewrite module, available through web platform installer -->
<rule name="Redirect oldsite.com" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^.*oldsite\.com$" />
</conditions>
<action type="Redirect" url="http://www.newsite.com/page.cfm?userid=123&mode=form"
appendQueryString="false" redirectType="Permanent" />
</rule>
Несколько битов объяснения:
Чтобы устранить некоторую путаницу, этот "URL-адрес" - это часть после первого слэша после домена, а не весь URL-адрес. Я собираюсь вставить это, чтобы он получил любой URL.
<match url=".*" />
Теперь мы добавим условие, потому что у меня было несколько веб-сайтов на этом компьютере, поэтому я хочу убедиться, что это правило применяется только к одному из них. Я также использовал подстановочный знак вместо "(www.)?" потому что подстановочный знак будет ловить любой поддомен.
<conditions>
<add input="{HTTP_HOST}" pattern="^.*oldsite\.com$" />
</conditions>
И последнее замечание для людей, которые хотят добавить несколько параметров строки запроса. Вам нужно будет экранировать амперсанд между ними, потому что если вы этого не сделаете, это не сработает:
<action type="Redirect" url="http://www.newsite.com/page.cfm?userid=123&mode=form"
appendQueryString="false" redirectType="Permanent" />