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...
Hola, la solución es más simple de lo que hubiera imaginado :)
ResponderBorrarLa semana pasada trabajé con: http://managedfusion.com/products/url-rewriter/, que me sirvió para hacer algo parecido a lo tuyo, pero precisaba que el IIS actuara como proxy. También se puede usar el modo que tu planteás.
Otra solución es usar el modulo mod_rewrite del Apache, con reglas muy sencillas podes realizar la conversiòn de URLS, asi es como tengo resuelto las urls de GXOPEN, donde tengo funcionando reglas que convierten las urls desde la primera versión generada en ASP, pasando por versiones intermedias en .net. Hoy gxopen es Java, y va por una evoluciòn que implico que armara nuevas reglas para soportar las urls de las versiones java anteriores.
ResponderBorrar