2010-05-17 9 views
5

He configurado una página 404 personalizada custom404.aspx que devuelve un error "404 no encontrado" correctamente, sin embargo, la página inexistente que inicialmente se solicitó, devuelve un estado "302 Encontrado".¿Por qué una página inexistente devuelve el estado 302 al utilizar una página 404 personalizada en asp.net

Así que cuando pruebo thispagedoesnotexist.aspx, devuelve un "302 Found", luego el custom404.aspx se carga y devuelve el estado "404 Not Found".

Quiero asegurarme de que las arañas de búsqueda/bots entiendan que la página solicitada no existe y no debe aparecer en ningún resultado de búsqueda. ¿Esta configuración es correcta?

Respuesta

-4

En pocas palabras ...

A modo de ejemplo, el uso:

/path_to_error_page.html 

... y no ...

http://www.example.com/path_to_error_page.html

La razón es que los interpreta servidor la solicitud inicial genera un redireccionamiento al 404 para que su cliente obtenga 2 respuestas.

Las rutas relativas no producen un redireccionamiento, pero una transferencia interna del servidor da como resultado solo una respuesta, ¡la que usted desea!

Esto debería solucionar su problema.

+0

Actualmente estoy usando una ruta relativa para las páginas de error 400 y 500. – user123212

0

Para responder a la pregunta planteada, así es como funcionan los errores personalizados en ASP.NET. He visto ejemplos (aunque no tengo uno útil) donde las personas han usado HttpModules para interceptar errores y enviar una página de error personalizada a usuarios que no parecen ser bots, y una respuesta 404 a usuarios que parecen ser bots

En una dirección diferente, no estoy seguro de que los bots sigan regularmente 302 respuestas de todos modos. Más relevante quizás, ¿es realmente tan malo tener su página de error (suponiendo que sea utilizable) aparezca en los resultados de búsqueda? Al menos el usuario tiene un enlace a su sitio, eso es mejor que mostrar el sitio de su competencia ...

+1

Creo que obtener páginas de error como las 404 y 500 personalizadas indexadas por arañas es algo malo.Google, por ejemplo, desacreditará los sitios que tienen demasiados mensajes de error, – user123212

0

En realidad, es muy probable que funcione exactamente como está configurado en su web.config.

Dependiendo de qué servidor web use (IIS 6/7) y de qué manera utilizó la página personalizada 404, pero básicamente esta es la diferencia entre redirigir a la página de error personalizada y ejecutarla.

Actualmente ha configurado asp.net/IIS para redirigir a la página de error. Cambie la configuración para ejecutar la página y obtendrá exactamente lo que está buscando :)

+0

. ¿Podría ser más específico? Cuando se configuran páginas de error personalizadas en el cuadro de diálogo IIS manager/ASP settings, estos cambios se aplican a web.config. ¿Está sugiriendo que intercepte el error en el archivo global.asax y use Server.Execute ("/ path-to-error-page") y deshabilite 500 mensajes de error personalizados en web.config? – user123212

0

He encontrado una solución para eso:

en su web.config poner "redirectMode = ResponseRewrite":

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/errors/GeneralError.aspx"> 
      <error statusCode="404" redirect="~/errors/PageNotFound.aspx" /> 
     </customErrors> 

... Y en su página 404 en Load poner: this.Response.Status = "404 Not Found";

Voila!

Cuestiones relacionadas