2010-06-30 6 views
9

En utilisant IIS7, comment puis-je diriger les adresses internes private network IP vers mon site Web pendant que je redirige les adresses IP externes vers une page "site en maintenance"? Jusqu'à présent, sur IIS7, j'ai trouvé la section dans IIS nommée "Restrictions d'adresses et de domaines IPv4" et je peux y ajouter les trois plages internes comme une plage autorisée. Cela semble facile. Maintenant, comment puis-je rediriger tout le trafic vers une page statique telle que app_offline.html que j'ai créée. (Je ne vais pas utiliser app_offline.html car cela mettra évidemment l'application hors ligne pour les adresses internes.)Diriger différentes adresses IP vers des pages différentes sur IIS7

+1

Plus adapté pour http://www.serverfault.com IMO – MikeD

+3

Ce sont des développeurs qui déploient une application web et qui configurent IIS7 alors quand je pense à SO ou SF, je pensais que ce serait le meilleur endroit. – Guy

Répondre

17

Vous pouvez utiliser la réécriture d'URL (http://www.iis.net/download/URLRewrite) pour cela. Ensuite, vous pouvez déposer une web.config avec le contenu comme:

<configuration> 
    ... 
    <system.webServer> 
    <rewrite> 
     <rules> 
     <rule name="External IP" stopProcessing="true"> 
      <match url="site-under-construction\.htm" negate="true" /> 
      <conditions> 
      <add input="{REMOTE_ADDR}" pattern="192\.168\.\d+\.\d+" ignoreCase="false" negate="true" /> 
      <add input="{REMOTE_ADDR}" pattern="::1" ignoreCase="false" negate="true" /> 
      <add input="{REMOTE_ADDR}" pattern="127\.0\.0\.1" ignoreCase="false" negate="true" /> 
      </conditions> 
      <action type="Redirect" url="/site-under-construction.htm" redirectType="Found" /> 
     </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 
    ... 
</configuration> 

Ce qu'il fait essentiellement est d'appliquer cette règle que si le contenu est pas déjà la page « site en construction » (pour empêcher l'infini redirections), et ne l'appliquent que si l'adresse IP ne provient pas de 192.168.XXX.XXX (et n'est pas localhost).

Sinon, il les laissera accéder à la page demandée. Notez que cela ne devrait pas être utilisé comme un mécanisme de sécurité, car Remote Addr pourrait être usurpé, mais cela ressemble à votre scénario.

Questions connexes