IIS url de redirection pour le répertoire virtuel
Comment puis-je définir une url de redirection pour un répertoire virtuel dans IIS 7.0? J'ai installé la dernière version du module de réécriture d'url 2.x.
Je peux expliquer mon problème avec un exemple:
J'ai un site web sur mon serveur IIS 7.0, www.mysite.com. J'ai décidé de créer un répertoire virtuel "ventes" en vertu de mon site qui pointe vers le site de répertoire racine. Maintenant, j'ai besoin de créer une url de redirection pour le vdir. Le vdir pointe vers le même répertoire racine virtuel que ma racine du site.
La grande idée est que je puisse aller à l'www.mysite/sales et je vais rediriger automatiquement vers www.mysite.com?productid=200.
J'ai essayé de rediriger avec la réécriture d'url pour vdir(pas de site), mais j'ai toujours ce message d'erreur:
Cannot add duplicate collection entry of type 'rule' with unique key
attribute 'name' set to "test".
Ce qui se passe quand je suis pointant vers le virtuel vdir et essayez d'ajouter une règle.
Je peux ajouter des règles pour le site de niveau, mais les règles ne fonctionnent pas. Je veux dire l'url "www.mysite/sales" me donne l'erreur suivante. Je sais que la clé est unique. Je l'ai vérifié à partir du web.config.
Ce genre de fonctionnalité est vraiment facile à utiliser dans IIS 6.0, juste le point à vdir avec votre souris et de définir les propriétés-->une redirection vers l'url.
S'il vous plaît quelques-on expliquer quelle est la bonne façon de le faire dans IIS 7.0?
OriginalL'auteur Jouni | 2010-04-27
Vous devez vous connecter pour publier un commentaire.
En fait pas tout à fait aussi simple, mais pas trop horrible.
1) Créer un répertoire physique au lieu d'un répertoire virtuel.
2) assurez-vous que vous avez l'adresse HTTP de Redirection des services de rôle. Voir http://www.iis.net/ConfigReference/system.webServer/httpRedirect
3) Ouvrez le Gestionnaire des services IIS et recherchez le répertoire physique vous souhaitez rediriger.
4) Double-cliquez sur la "HTTP Redirect' icône sous IIS.
5) cochez la Case "Rediriger les demandes vers cette destination" et entrez la nouvelle URL (http://example.com/newPage.html)
6) Cochez les deux cases que nécessaire, je la trouve généralement nécessaire de vérifier à la fois.
7) Appuyez sur le bouton Appliquer.
8) Sélectionnez le site Web et "Redémarrer" en vertu de Gérer le Site Web.
9) de Test.
Error parsing XSLT file: \xslt\ConfigReference.xslt
mais rafraîchissant apporte le contenu réel parfois. Semble être un problème temporaire, donc j'ai roulé en arrière sur le lien modifier.Pourquoi est-il nécessaire de créer un répertoire physique au lieu d'un monde virtuel? Quelle est la différence?
Cela fait plus de 5 ans, donc j'ai eu à chercher. stackoverflow.com/a/21184852/11912 suggère qu'il est en train de créer un site web.config dans le répertoire physique, ce qui semble correct pour moi. Si vous entreprenez quelque chose, maintenant je peut recommander l'utilisation de Réécriture d'URL 2.0 (il peut être installé avec la Plateforme Web de l'Installateur). Il fonctionne beaucoup mieux qu'il y a de nombreuses années.
OriginalL'auteur
La raison de ce qui se passe, c'est parce que par défaut, la règle de tous les configurations obtenir héritées du parent d'applications web. Donc si il y a une Règle définie à l'intérieur de la racine du site web, il devient héréditaire sur tous les sites enfant dans la hiérarchie; sauf si elle est désactivée.
Ainsi, par Exemple, si l'application IIS hiérarchie est la suivante -
Site Web Par Défaut(Root)
| Application Web 1(VDir1) | Web Sous Application 11(VDir2)
| Application Web 2(VDir3)
La Règle, avec un nom de "Test" s'il existe dans la Racine de l'application, il est hérité de l'Application Web 1, Application Web 11 et Application Web 2
Dans votre cas d'Application Web 11 (VDir2) est physiquement au même Endroit que (VDir1). Par conséquent, les configurations IIS sont les mêmes pour les deux répertoires car il partage la même Web.fichier de configuration.
De sorte que toute nouvelle Règle ajoutée pour le Web.Fichier de configuration sera automatiquement appliqué à ces deux Répertoires Virtuels (VDir1 & VDir2). Et Depuis de Règles héritées par défaut, le moteur de règle dans IIS trouverez un problème lors de l'analyse de la règle, puisqu'il existe déjà en héritage.
Une solution possible serait d'ajouter un < /> tag avant d'ajouter une Règle à l'intérieur du web.fichier de config, de sorte qu'il efface tout hérité de la règle.
Cependant, je préfère le < Retirer nom='Nom de la Règle' /> tag au lieu de cibler n'enlever que la règle qui doivent être ajoutés dans les hérité de config. Cela permettrait de garantir que toutes les autres Règles à la racine du site web est héréditaire dans la hiérarchie, avec seulement cette nouvelle règle (sorte de) remplacée.
OriginalL'auteur