el Guille, la Web del Visual Basic, C#, .NET y más...
Lo Nuevo de Julio 2007
 

Detectando el error 404

 
Publicado el 19/Jul/2007
Actualizado el 19/Jul/2007
Autor: Guillermo 'guille' Som
No se ha podido conectar a la base de datos para ver el total de usuarios.  Tu IP es: '172.70.38.185' No estás autorizado para usar este servicio.
 


 
 

Pues eso... que con los cambios que estoy haciendo en las páginas del sitio (y las que aún me quedan por hacer), pues seguramente se producirá algún que otro error HTTP 404, osea, el error que se produce en un sitio Web cuando una página (u otro recurso) no existe.

Para esos casos, dependiendo de si es una página ASPX o es una página HTML o cualquier otra cosa, por ejemplo, una imagen, un ZIP, etc., pues hay forma de controlarlo o no...

La forma de controlarlo, depende de si es un recurso de ASP.NET (por ejemplo, una página ASPX) o no.

En el caso de dependa de ASP.NET, se puede usar una página a la que redirigir, ese control se hace en el fichero web.config.

Si no es una página (o algo que dependa de ASP.NET), la forma de controlarlo es por medio del IIS, en cuyo caso se puede definir una página a la que redirigir cuando se produzca ese error 404.

La cuestión es que hasta ahora todas las páginas (o la gran mayoría) que tengo en mi sitio son HTML (con extensión .htm), pero como con esas páginas no se pueden usar las características de ASP.NET (ya que las páginas deben ser .aspx), pues me estoy viendo que tengo que ir "duplicando" material.

En realidad no va a a "ocupar" el doble, que sería lo que se puede sacar en claro después de que yo haya dicho lo de "duplicar", ya que hasta ahora lo que estoy haciendo es "redirigiendo" desde la página .htm a la nueva con la extensión .aspx.

Por ejemplo, la página "principal" de la sección de Sistemas, hasta ahora era /Sistema/sistema.htm y lo que contiene esa página es código para que se vaya a /Sistema/Default.aspx. Si quieres comprobarlo, pulsa aquí.

Y esto mismo, es lo que he hecho con algunas otras páginas, más que nada, por si esas páginas .htm ya están en los "buscadores" y si alguien la pulsa, pues... que no le de error... por muy personalizado que esté, un error no es grato.

Porque una de las cosas que hace ahora el código que he añadido al web.config es mandarte a una página con el nuevo "look" que te dice que se ha producido un error. Pulsa aquí para ver esa página de error.

 

Y como a mi no me gusta "trabajar" demasiado, je, je, pues me he puesto a "investigar" un poco... y al menos he encontrado una pequeña forma de evitar "la duplicidad" de páginas, (recuerda que en teoría por cada página .htm que hay actualmente debe haber otra con la extensión .aspx), y es configurando el código de la página que usa el propio IIS para mostrar el error de página no encontrada.

Por ejemplo, si el link que se pulsa (o que se escriba en el navegador) apunta a una página .htm que no existe, (también vale para las páginas .asp -sin la X-) lo que he hecho es que "intente" mostrar esa misma página, pero con la extensión .aspx.

Por ejemplo, si pulsas en este link, verás que la página a la que te manda es una página con la extensión .aspx, (que es la que está publicada), pero si pasas el cursor por el link, verás que te dice que la extensión es .htm.

Si te fijas en el botón de ir atrás del anvegador, verás que apunta a la página de Error 404, pero como esa página se encarga de mandarla a la que tiene la extensión .aspx, pues... se muestra la página correcta.
Como peudes adivinar es un rollo, pero... ¡funciona!

¿Qué consigo con esto?

Pues... que si creo una página con la extensión .aspx para que me permita usar las cosas que estoy haciendo con ASP.NET 2.0 y las Master Page (páginas principales que dice la documentación), pues... me puedo permitir el "lujo" de eliminar la página antigua con la extensión .htm (o .asp), ya que si alguien intenta ir a esa página que ya no está, pues lo redirigirá a la nueva... por supuesto, siempre y cuando la nueva se llame igual y solo cambie la extensión a .aspx.

Además de esto, también controlo otros casos, por ejemplo, antes las páginas predeterminadas eran "indice.htm", que después pasó a ser "default.asp", y en alguna ocasión, incluso llegó a ser "index.htm"... Todos estos nombres era cuando yo no controlaba el sitio y me tenía que amoldar a lo que la gente del sitio Web quisieran hacer con el nombre de la página que sería la "predeterminada" de un directorio.

Ahora con el "control sobre el IIS", pues... en cualquier sitio de alojamiento es fácil de indicar cual será la página predetermianda (cuando no se indica ningún nombre de página), incluso puedes indicar el orden en el que se buscarán las páginas, (por si quieres tener varios nombres de "páginas predeterminadas).

¿Para que sirve eso?

Por ejemplo, si escribes en el navegador la dirección a la que apunta este link, verás que te muestra la página predeterminada de esa carpeta. Esto es particularmente útil para cuando vas a un sitio Web, que así no tienes que escribir ninguna página para ir a la página principal, por ejemplo: http://www.elguille.info/ te llevará a http://www.elguille.info/default.aspx ya que default.aspx es la página predeterminada.

A lo que iba... en las comprobaciones de los errores 404, también compruebo si la página que da error se llama indice, index o default, en cuyo caso, lo que hace es que la "intenta" redirigir a default.aspx.

Por ejemplo, en el curso de VB.NET, la página "principal" es indice.htm, si yo quitara esa página (que la quitaré) y se intentara acceder a ella, lo que haría el código que he puesto es que lo redirigiría a la página Default.aspx, que ya está y que será la que se quede como página principal del curso de Visual Basic .NET..

 

¿Por qué te cuento esta película?

Para que sepas las "tribulaciones" del Guille, je, je... y de camino, cómo "aprendo" a base de "palos", que no todo se aprende de libros o de sitios Web, je, je, que también se aprende porque uno quiere hacer las cosas... y si tienes "la intuición" de que se puede hacer de otra forma, pues... si lo intentas... lo mismo hasta lo consigues... Aunque algunas veces, tengo que reconocerlo, me complico más de la cuenta... en fin... pero... esto es lo que me "mola" a mí... aunque sea comiéndome el coco por culpa del calor...

 

Bueno, si ves que da error 404 y no te redirige a ningún sitio, es que seguramente la página (o el recurso) no existe, así que... acuérdate de avisarme.
Gracias.

Nos vemos.
Guillermo

 


Links a las otras noticias de Julio 2007

 

 



 
 



Otras cosillas que te pueden interesar:
elGuille@seti

 Apúntate al grupo del Guille en el SETI

 Ver los datos del grupo del Guille en el SETI

Estos links son para procesar resultados con  BOINC
(Berkeley Open Infraestructure for Network Computing)

Las novedades más recientes en formato RSS
elGuille.info:
 MundoProgramacion.com:

Si quieres conocer mejor al Guille

La fecha/hora en el servidor es: 14/10/2024 19:07:58

La fecha actual GMT (UTC) es: 

©Guillermo 'guille' Som, 1996-2024