Второй домен, указывающий на подпапку первого домена, не будет перезаписывать порт в IIS 8 URL Rewrite

Чтобы попытаться сделать это как можно короче, у меня работают два домена.

Первый домен - это наш основной домен на www.site1.com (порт 80), указывающий на обычную настройку сайта в IIS 8, Server 2012.

Второй домен находится на www.site2.com (порт 8085), но с помощью некоторого умного мастера перезаписи URL, который я нашел на SO, www.site2.com указывает на www.site1.com/site2/, но ведет себя так, как если бы это был это собственный домен. Мы сделали это, чтобы разделить ресурсы между site1 и site2 в среде .NET.

У меня нет управления на уровне DNS, но у меня есть администратор сервера и его настройки, и я сам выполнил все переписывание URL-адресов для обоих сайтов. Мы получили запрос на установку сертификата SSL на www.site2.com (порт 444), чтобы мы могли настроить сайт на HTTPS. Само по себе это не имеет отношения к проблеме, потому что проблема уже существует в HTTP.

Проблема возникла из-за того, что другой разработчик хочет иметь возможность протестировать сертификат и конфигурации порта. На данный момент это невозможно даже в HTTP. Ввод www.site1.com:80 на сервере работает нормально, а www.site2.com:8085 - нет. site2 подключается правильно только при добавлении www.site2.com:80 или просто при вводе www.site2.com, я полагаю, поскольку он переписан как подпапка вне site1.

Я перепробовал все, что мог придумать, чтобы попытаться переписать порты в URL-адресе, чтобы разработчик мог проверить конфигурацию порта, набрав www.site2.com:8085. URL-адрес никогда не разрешается.

Привязки также установлены правильно, потому что www.site2.com отлично работает как в тестовом, так и в производственном режиме и работает уже много лет. Это не работает только тогда, когда к URL-адресу добавлен правильный порт.

Это единственный код, запускающий перезапись в его нынешнем виде:

<rule name="www.site2 redirect" enabled="true">
    <match url=".*" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^(www.)?site2.com$" />
    </conditions>
    <action type="Rewrite" url="/site2/{R:0}" />
</rule>

Любая помощь будет оценена. Спасибо.


person Followmarko    schedule 20.07.2017    source источник


Ответы (1)


Вы можете сделать это таким образом, просто добавьте еще одно условие в свое правило перезаписи:

<rule name="www.site2 redirect" enabled="true">
    <match url=".*" />
    <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^(www.)?site2.com$" />
        <add input="{HTTP_HOST}" pattern="^(www.)?site2.com:8085$" />
    </conditions>
    <action type="Rewrite" url="/site2/{R:0}" />
</rule>

Другой способ сделать это с одним условием (удалить $ из шаблона при условии):

<rule name="www.site2 redirect" enabled="true">
    <match url=".*" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^(www.)?site2.com" />
    </conditions>
    <action type="Rewrite" url="/site2/{R:0}" />
</rule>

Но это правило также захватывает такие домены: site2.com.au, site2.com.fr, site2.com:{ANYPORT} и т. Д. Вот почему я предпочитаю первое правило

person Victor Leontyev    schedule 20.07.2017
comment
Я пробовал оба примера. Ни один из них не позволяет сайту разрешиться при добавлении порта. Однако после применения этих новых правил сайт по-прежнему работает без порта. - person Followmarko; 20.07.2017
comment
Я не могу поверить Я тестировал его дважды, и оба раза он работал. Вы перезагружали сайт после изменения конфигурации? - person Victor Leontyev; 20.07.2017
comment
Не повезло. Я использовал именно ваш первый пример и поместил правило перезаписи в начало списка. Затем я перезапустил веб-сайт и веб-сервер. Вы добавляли в привязки сайтов что-нибудь, чего мне могло не хватать? - person Followmarko; 20.07.2017
comment
У вас есть одно приложение с такими привязками? www.site2.com:8085, www.site2.com:80, www.site1.com? Или это разные приложения в IIS? - person Victor Leontyev; 22.07.2017