0

Pour essayer de rendre le plus court possible, j'ai deux domaines à l'œuvre.Le deuxième domaine pointant vers le sous-dossier du premier domaine ne réécrit pas le port dans IIS 8 Réécriture de l'URL

Le premier domaine est notre domaine principal à www.site1.com (port 80), montrant un ensemble régulier d'un site dans IIS 8, Server 2012.

Le second domaine est à www.site2 .com (port 8085), mais en utilisant un astucieux outil de réécriture d'URL que j'ai trouvé sur SO, www.site2.com pointe vers www.site1.com/site2/, mais se comporte comme s'il s'agissait de son propre domaine. Nous l'avons fait afin de partager des actifs entre site1 et site2 dans un environnement .NET.

Je n'ai pas de contrôle au niveau du DNS, mais j'ai un administrateur du serveur et de ses paramètres et j'ai fait toute la réécriture d'URL pour les deux sites moi-même. Nous avons reçu une demande d'installation d'un certificat SSL sur www.site2.com (port 444) afin que nous puissions définir le site sur HTTPS. Ce n'est pas pertinent pour le problème en soi, car le problème existe déjà dans HTTP.

Le problème est survenu parce qu'un autre développeur veut pouvoir tester les configurations de cert et de port. Pour le moment, ce n'est pas possible même dans HTTP. Taper dans www.site1.com:80 sur le serveur fonctionne bien, mais pas www.site2.com:8085. site2 ne se connecte correctement que lorsqu'il est ajouté à www.site2.com:80 ou simplement en tapant www.site2.com, je crois depuis qu'il est réécrit comme un sous-dossier du site1.

J'ai essayé tout ce que je pouvais penser pour essayer de réécrire les ports dans l'URL afin que le développeur puisse tester la configuration du port en tapant www.site2.com:8085. L'URL ne résout jamais.

Les fixations sont réglées correctement, car www.site2.com fonctionne très bien à la fois en test et en production et cela depuis des années. Cela ne fonctionne pas lorsque le port correct est ajouté à l'URL.

C'est le seul code déclenchant la réécriture tel qu'il est:

<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> 

Toute aide serait appréciée. Merci.

Répondre

0

Vous pouvez le faire de cette façon, il suffit d'ajouter une condition supplémentaire dans votre règle de réécriture:

<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> 

Une autre façon de que avec une condition est (enlever $ de modèle dans condiiton):

<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> 

Mais cette règle va capturer des domaines comme ça aussi: site2.com.au, site2.com.fr, site2.com:{ANYPORT} etc. Voilà pourquoi je préfère la première règle

+0

J'ai essayé les deux exemples. Aucun ne permet au site de résoudre lorsque le port est ajouté. Le site fonctionne toujours sans le port lorsque ces nouvelles règles sont appliquées. – Followmarko

+1

Je ne peux pas croire. Je l'ai testé deux fois et les deux fois ça marche. Avez-vous redémarré le site Web après la modification de votre configuration? –

+0

Pas de chance. J'ai utilisé exactement votre premier exemple et j'ai placé la règle de réécriture en haut de la liste. J'ai ensuite redémarré le site Web et le serveur Web. Avez-vous ajouté quelque chose aux liens du site que je pourrais manquer? – Followmarko