2008-11-18 6 views
49

Pour mon site Web IIS, je souhaite rediriger TOUTES les demandes vers UNE seule page. Le but de ceci est que je veux faire un peu de maintenance sur la base de données (le déconnecter) que toutes mes applications web utilisent. J'ai environ 50 applications web fonctionnant sous ce site, donc je voudrais éviter de visiter chacun d'eux pour changer quelque chose. Je pense que je pourrais faire un seul changement dans machine.config? Tous les indices seraient appréciés.IIS: rediriger toutes les demandes vers une page?

Répondre

10

Désactivez toutes les pages, arrêtez probablement le site Web actuel et créez un nouveau site entièrement vide à sa place. Ensuite, mettre en place une page d'erreur personnalisée pour l'erreur 404 (fichier ot trouvé). Erreurs personnalisées est un onglet dans la boîte de dialogue des propriétés du site Web dans IIS. Créez simplement la page que vous souhaitez envoyer, puis modifiez l'entrée pour 404 dans l'onglet des erreurs personnalisées pour pointer vers le nouveau fichier que vous venez de créer.

+0

Ce fut une excellente suggestion, et a fonctionné pour mon grand mélange .NET/applications ASP classiques. Très facile à mettre en œuvre. – Mike

+1

Il y a un gros problème avec cela, bien que l'interface fonctionnera esthétiquement, si vous avez un moteur de recherche qui explore votre site, il recevra tout à coup un tas de 404 et supprimera le contenu des résultats de recherche. – Talon

80

Si vous utilisez ASP.NET 2.0 (ou supérieur), vous pouvez supprimer une page app_offline.htm à la racine.

More info here.

+0

C'est cool, je ne le savais pas. Bien que nos sites au travail soient un mélange de pages aspx et htm, cela ne fonctionnerait pas pour nous. – pipTheGeek

+0

Bien, je n'étais pas au courant de ça non plus. –

+0

J'ai découvert app_offline.htm en lisant le blog de Scott Gu, mais je suis surpris que je n'ai pas lu à ce sujet ailleurs. Cela fonctionne comme annoncé, ce qui aide. –

36

dans webconfig

<rewrite> 
     <rules> 
      <rule name="redirect all requests" stopProcessing="true"> 
       <match url="^(.*)$" ignoreCase="false" /> 
       <conditions logicalGrouping="MatchAll"> 
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" /> 
       </conditions> 
       <action type="Rewrite" url="index.php" appendQueryString="true" /> 
      </rule> 
     </rules> 
    </rewrite> 
+6

Donner un +1 parce que c'est une solution alternative (qui a fonctionné pour moi), cependant il faut souligner qu'une réécriture n'est pas la même chose qu'une redirection, donc si une vraie redirection est requise alors cela ne marchera pas. – Davy8

+3

Si vous avez besoin d'une redirection, il vous suffira de changer le 'type d'action' à' Redirect'. – rcdmk

+3

Cette règle de réécriture redirige uniquement les demandes vers des dossiers et non vers des fichiers. L'OP voulait rediriger * toutes * les demandes. Pour ce faire, supprimez la balise ''. – Keith

1

Pouvez-vous créer un nouveau site dans IIS avec une liaison vers le port 80 avec un hôte tête vide (un peu comme le site par défaut), puis arrêter l'autre site (s)? De cette façon, toutes les demandes seraient traitées par le nouveau site, qui pourrait simplement être une page HTML statique notifiant aux utilisateurs que le site est en maintenance.

Questions connexes