web-dev-qa-db-fra.com

IIS - HTTP Redirige toutes les demandes d'un répertoire virtuel vers un autre

Comment configurer une règle de redirection HTTP pour rediriger toutes les demandes d'un répertoire virtuel vers un autre répertoire virtuel, lorsque je ne connais pas le nom d'hôte ou l'adresse URL complète et que je ne peux pas utiliser le module URL Rewrite?

Les redirections suivantes devraient fonctionner:

http://Host1/app/oldvdir -> http://Host1/app/newvdir
http://Host1/app/oldvdir/ -> http://Host1/app/newvdir/
http://Host1/app/oldvdir/login.aspx -> http://Host1/app/newvdir/login.aspx
http://Host2/app/oldvdir/login.aspx -> http://Host2/app/newvdir/login.aspx

J'aimerais placer la règle de redirection dans le répertoire web.config de l'application. J'ai essayé les règles suivantes, mais le résultat final est simplement que le vdir redirigé est dupliqué à la fin du vdir d'origine jusqu'à atteindre la longueur maximale de l'URL, par exemple:

http://Host/oldvdir/login.aspx -> http://Host/oldvdir/newvdir/newvdir/newvdir/...

Règles dans root web.config (j'ai également essayé toutes sortes de combinaisons de paramètres avec et sans barres obliques de début et de fin, etc.):

<location path="oldvdir">
    <system.webServer>
      <httpRedirect enabled="true" exactDestination="false" httpResponseStatus="Permanent">
        <add wildcard="*/oldvdir/*" destination="/newvdir/"/>
      </httpRedirect>
    </system.webServer>
  </location>

<location path="oldvdir/">
    <system.webServer>
      <httpRedirect enabled="true" exactDestination="false" destination="/newvdir" httpResponseStatus="Permanent"/>
    </system.webServer>
  </location>
2
nekno

Peu de choses que tu peux faire.

  1. Supprimer le répertoire virtuel. Sélectionnez également le dossier dans lequel vous souhaitez rediriger les demandes, puis ajoutez-le en tant que répertoire virtuel portant l'ancien nom. Vous supprimez donc OldVdir, puis vous le créez à nouveau sous OldVDIR, mais cette fois-ci avec la source comme nouveau vdir.

  2. Vous pouvez utiliser .asp .aspx pour faire la redirection. En asp, vous pouvez faire un response.redirect si vous êtes paresseux, ou vous pouvez le faire correctement comme ceci:

https://Gist.github.com/4153268

1
Frank

Il est regrettable que la documentation MS manque si peu sur ce sujet. Heureusement, j'ai pu comprendre cela. J'ai trouvé les termes $ S et $ Q décrits dans documentation IIS6. .

<configuration>
  <location path="app/oldvdir">
    <system.webServer>
      <httpRedirect enabled="true" destination="/app/newvdir$S$Q" exactDestination="true"/>
    </system.webServer>
  </location>
</configuration>
1
Mike Godin