2010-11-08 17 views
1

J'ai utilisé le plugin UrlRewrite IIS pendant environ un mois sur notre site de production.Problème IIS UrlRewrite

J'ai créé une seule règle de redirection utilisant le modèle/Assistant fourni, le enrty de configuration résultant est la suivante:

<rewrite> 
    <rules> 
     <rule name="CanonicalHostNameRule1" enabled="true"> 
      <match url="(.*)" /> 
      <conditions> 
       <add input="{HTTP_HOST}" pattern="^www\.mycompany\.com$" negate="true" /> 
      </conditions> 
      <action type="Redirect" url="http://www.mycompany.com/{R:1}" /> 
     </rule> 
    </rules> 
</rewrite> 

Il a été en cours d'exécution bien jusqu'à ce matin, lorsque le site a commencé erroring avec « trop de redirections ". Pour autant que je sache, rien dans la configuration ou l'infrastructure n'a changé.

J'ai désactivé la règle, et le site est redevenu fonctionnel (bien que clairement sans aucune redirection). J'ai ensuite réactivé la règle, et maintenant tout fonctionne comme prévu. Je n'ai apporté aucune modification à la règle sauf pour la désactiver temporairement.

Des idées? Est-ce que le plugin est buggé?

+0

Sur quel framework travaillez-vous? Je sais qu'il y avait quelques erreurs particulièrement désagréables avec 1.1 qui a exigé un redémarrage d'IIS ... – dooburt

Répondre

0

Essayez cet autre code, j'ai sur mon web et exécuter parfait:

<rule name="Canonical Host Name" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
     <add input="{HTTP_HOST}" pattern="^yourdomain\.com$" /> 
    </conditions> 
     <action type="Redirect" url="http://www.yourdomain.com/{R:0}" redirectType="Permanent" /> 
    </rule> 

L'explication est simple: une URL a match pour traiter La condition est que anydomaintext.extension avoir (votre domaine et extension) sans préfixe Rediriger vers le même domaine avec le préfixe complet et mettre tous les url.

D'autres tentatives ont été R: 1 mais ont quitté une partie de l'URL principale et ne pas s'exécuter. L'exemple de Ruslani: http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx J'ai essayé d'utiliser l'ajout de www, mais j'utilise finalement l'exemple ci-dessus.

0

Le correctif ci-dessous a fonctionné pour moi. J'ai découvert que ma règle de réécriture était obsolète. L'autre domaine avait changé leur politique d'URL et ont été maintenant rediriger tout le trafic de otherdomain.com à www.otherdomain.com

<action type="Rewrite" url="http://otherdomain.com/abc/{R:1}" /> 

à

<action type="Rewrite" url="http://www.otherdomain.com/abc/{R:1}" /> 

Voyez-vous la différence? En ajoutant le 'www' j'ai préempté l'autre redirection de domaine. Je me suis simplement conformé à leur nouvelle politique.