2008-11-18 10 views
49

Para mi sitio web de IIS, me gustaría redirigir TODAS las solicitudes a UNA página. El propósito de esto es que quiero realizar un mantenimiento en la base de datos (fuera de línea) que usan todas mis aplicaciones web. Tengo alrededor de 50 aplicaciones web que se ejecutan en este sitio web, por lo que me gustaría evitar visitar cada una de ellas para cambiar algo. Estoy pensando que podría hacer un solo cambio en machine.config? Cualquier sugerencia sería apreciada.IIS: ¿Redirige TODAS las solicitudes a una página?

Respuesta

10

Desactive todas las páginas, probablemente detenga el sitio web actual y cree en su lugar un sitio completo completamente nuevo en blanco. A continuación, coloque una página de error personalizada para el error 404 (archivo ot found). Errores personalizados es una pestaña en el cuadro de diálogo de propiedades del sitio web en IIS. Simplemente cree la página que desea enviar y luego cambie la entrada 404 en la pestaña de errores personalizados para que apunte al nuevo archivo que acaba de crear.

+0

Esta fue una excelente sugerencia, y funcionó para mi mezcla grande .NET/aplicaciones ASP clásicas. Muy fácil de implementar. – Mike

+1

Hay un gran problema con esto, aunque estéticamente la interfaz de usuario funcionará, si tienes un motor de búsqueda rastreando tu sitio, de repente recibirá un montón de 404 y eliminará el contenido de los resultados de búsqueda. – Talon

80

Si está utilizando ASP.NET 2.0 (o superior), puede colocar una página app_offline.htm en la raíz.

More info here.

+0

Eso es genial, no lo sabía. Aunque nuestros sitios en el trabajo son una mezcla de páginas aspx y htm, no nos funcionaría. – pipTheGeek

+0

Bien, yo tampoco estaba enterado de esto. –

+0

Me enteré sobre app_offline.htm leyendo el blog de Scott Gu, pero me sorprende que no haya leído sobre él en otro lugar. Funciona según lo anunciado, lo que ayuda. –

36

en 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

dando un +1 porque es una solución alternativa (que funcionó para mí), sin embargo, debe señalarse que una reescritura no es lo mismo que una redirección, por lo que si se requiere una redirección real, esto no funcionará. – Davy8

+3

Si necesita una redirección, solo tendrá que cambiar el 'tipo de acción' a' Redirigir'. – rcdmk

+3

Esta regla de reescritura solo redirigirá las solicitudes a las carpetas, no a los archivos. El OP quería redirigir * todas * las solicitudes. Para hacerlo, elimine la etiqueta ''. – Keith

1

Podría crear un nuevo sitio en IIS con un enlace al puerto 80 con un panel de encabezado de host (al igual que el sitio predeterminado) y después dejar que el otro sitio (s)? De esta forma, todas las solicitudes serían manejadas por el nuevo sitio, que podría ser simplemente una página HTML estática que notifica a los usuarios que el sitio está inactivo para mantenimiento.

Cuestiones relacionadas