89 votes

Redirection d'URL IIS7 de la racine vers un sous-répertoire

J'utilise Windows Server 2008 avec IIS7. J'ai besoin de rediriger les utilisateurs qui viennent à www.mysite.com à wwww.mysite.com/menu_1/MainScreen.aspx . Voici la structure des fichiers que j'ai pour les projets :

-Sites
 -Default Web Site
  -Menu_1
  -MenuService
  -VscWebService

J'apprécierais vraiment toute aide à ce sujet.

0 votes

La frontière entre la programmation et l'administration de serveurs est ténue (une frontière qui s'estompe de plus en plus avec la popularité des "Dev Ops"). Malgré cela, Stack Overflow et Server Fault maintiennent une distinction claire entre les deux sites, et ce contenu appartient à Server Fault car il s'agit plus de configurer un outil (IIS) que de programmer.

142voto

LazyOne Points 25070

C'est ici. Ajoutez ce code à votre web.config fichier :

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Root Hit Redirect" stopProcessing="true">
                <match url="^$" />
                <action type="Redirect" url="/menu_1/MainScreen.aspx" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

Il effectuera une redirection permanente 301 (l'URL sera modifiée dans le navigateur). Si vous souhaitez que ces "redirections" soient invisibles (réécriture, redirection interne), utilisez cette règle (la seule différence est que "Redirect" a été remplacé par "Rewrite") :

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Root Hit Redirect" stopProcessing="true">
                <match url="^$" />
                <action type="Rewrite" url="/menu_1/MainScreen.aspx" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

2 votes

Je vous remercie de votre réponse. Cela ne fonctionne toujours pas pour moi. D'abord, j'ai ajouté ceci au web.config de wwwroot et cela n'a pas fonctionné. J'ai donc ouvert l'URL Rewrite au niveau du serveur ( Server > Sites > Default Website) mais cela ne fonctionne toujours pas. Est-ce que je fais quelque chose de mal ici ? Merci encore pour votre aide.

2 votes

@user881148 La règle fonctionne définitivement -- j'ai testé avant de poster. 1) Peut-être est-elle placée dans le mauvais ordre/place ? L'ordre des règles est important : si vous avez déjà des règles, ajoutez cette règle avant les autres. 2) "Serveur > Sites > Site Web par défaut" -- ce n'est pas un niveau de serveur -- c'est un site web normal par défaut créé par le programme d'installation de IIS -- rien de plus. 3) Essayez de créer cette règle manuellement via l'interface graphique (IIS Manager) -- c'est simple -- seulement quelques champs à remplir. 4) Peut-être que votre routage ASP.NET gère toute la réécriture et ignore le module URL Rewrite. Vérifiez ce moment d'une manière ou d'une autre (désolé, je ne suis pas bon en ASP.NET).

0 votes

Merci encore pour votre réponse. J'ai vérifié tout ce que vous avez mentionné ci-dessus, et il n'y a pas d'autres règles ajoutées. J'ai essayé de l'ajouter via Default Website > URL Rewrite et cela n'a pas fonctionné non plus. Je n'ai pas non plus configuré de reroutage ASP.NET.

49voto

Shad Points 1233

Je pense que cela peut être fait sans le module IIS URL Rewrite. <httpRedirect> prend en charge les caractères génériques, vous pouvez donc le configurer de cette façon :

  <system.webServer>
    <httpRedirect enabled="true">
      <add wildcard="/" destination="/menu_1/MainScreen.aspx" />
    </httpRedirect>
  </system.webServer>

Notez que la fonction de "redirection HTTP" doit être activée sur IIS - cf. Redirections HTTP

16voto

Jarrod Points 562

Je n'ai pas réussi à le faire fonctionner avec la réponse acceptée, principalement parce que je ne savais pas où entrer ce code. J'ai cherché partout une explication de l'outil URL Rewrite qui aurait un sens, mais je n'en ai pas trouvé. J'ai fini par utiliser l'outil de redirection HTTP dans IIS.

  1. Choisissez votre site
  2. Cliquez sur HTTP Redirect dans la section IIS (Assurez-vous que le Role Service est installé).
  3. Cochez "Rediriger les demandes vers cette destination"
  4. Saisissez l'endroit où vous voulez rediriger. Dans votre cas "wwww.mysite.com/menu_1/MainScreen.aspx"
  5. Dans Redirect Behavior, j'ai découvert que je devais cocher "Only redirect requests to content in this directory (not subdirectories), or it would go into a loop. Voyez ce qui fonctionne pour vous.

J'espère que cela vous aidera.

1 votes

Il y a un problème avec cette solution. Si vous choisissez de rediriger/réécrire http://server/ a http://server/Folder/ en accédant http://server/Folder (notez qu'il n'y a pas de barre oblique finale) sera redirigé vers http://server/Folder/Folder qui retournera probablement un 404.

0 votes

Cela fait un moment que je n'ai pas travaillé sur ce sujet, mais je crois me souvenir que cela m'est arrivé et que c'est la raison de mon étape n°5. L'avez-vous vérifié ?

1 votes

Honnêtement, je ne me souviens pas, mais je crois que oui. Notez que dans le cas ci-dessus, IIS considère /Folder comme un fichier et non comme un répertoire. Il redirige donc vers le sous-répertoire et n'est pas couvert par l'exclusion "(not subdirectories)".

4voto

mikem Points 41

Vous devez le télécharger à partir de Microsoft : http://www.microsoft.com/en-us/download/details.aspx?id=7435 .

L'outil s'appelle "Microsoft URL Rewrite Module 2.0 for IIS 7" et est décrit comme suit par Microsoft : "URL Rewrite Module 2.0 fournit un mécanisme de réécriture basé sur des règles pour modifier les URL demandées avant qu'elles ne soient traitées par le serveur Web et pour modifier le contenu de la réponse avant qu'elle ne soit servie aux clients HTTP".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X