Estamos migrando un sitio que estaba generado en .Net en un Windows Server, a uno nuevo generado en Java en un Linux.
El tema es que con el cambio, las URLs cambian, pasan de ser de tipo
http://host/sitio/pagina.aspx?parametrosa ser de tipo
http://host:puerto/sitio/servlet/pagina?parametrosEntonces, como hacer la migración de forma razonable, sin que haya problemas con los links que llegan al sitio.
Posibles soluciones
Habían varias posibles soluciones:
- sacar el sitio viejo y en su lugar poner una página de error 404 (not found) con un link al sitio nuevo
- poner que el IIS haga un redirect al sitio nuevo, pero ahí no se si funciona cuando se accede a una URL que no es la página por defecto
En APS.NET existe un archivo de nombre Global.asax, que define algunos métodos que se ejecutan en distintos momentos, como por ejemplo cuando se levanta el sitio, cuando llega un request de una página, cuando se termina de procesar un request, etc.
En particular el evento que me interesa en este caso es el que se dispara cuando se hace un request a una página, ya que ahí puedo hacer el redireccionamiento con inteligencia, mandando al usuario a la página que quería ir con los parámetros que le pasó, pero en el otro sitio.
El archivo Global.asax quedó algo así (*):
<%@ language="C#" %>
<script runat="server">
void Application_BeginRequest(Object sender, EventArgs e)
{
string request = Request.Url.PathAndQuery;
int pos = request.LastIndexOf('/');
request = request.Substring(pos+1);
request = request.Replace(".aspx", "");
string url = @"http://host:8080/sitio/servlet/" + request;
Response.Redirect(url);
}
</script>
(*) En realidad es un poco más complicada la solución final ya que el host es distinto según se esté dentro de la intranet o fuera, pero eso no viene al caso... Readmore »»




