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 |
|
|