Pregunta

Tenemos un sitio web; el cual, hasta ahora solo tenía páginas HTML. Ahora lo estamos desarrollando en ASP .Net.

Esto significa que todas las páginas .html se cambiarán a la extensión .aspx. El problema es que hay muchas referencias externas a estas páginas, y no queremos ir a cambiar todos y cada uno de los enlaces a aspx de inmediato.

¿Hay alguna forma de redirigir un enlace a páginas .html a páginas .aspx? Por ejemplo, ¿hay alguna forma en que el servidor verifique el archivo especificado, descubra que enlaza con la página .html y abre automáticamente la página .aspx?

¿Fue útil?

Solución

Si haces algún tipo de reescritura de URL, puedes hacer que todos los enlaces permanezcan igual y solo sirvas las páginas aspx, la solicitud de index.html se asigna a index.aspx

Esto es lo que dice ms sobre la reescritura de URL en asp.net:

http://msdn.microsoft.com/en-us/library /ms972974.aspx

Otros consejos

Aprovecharía esta oportunidad para dejar atrás las extensiones (.html, .aspx, etc.).

Para todos nuestros sitios web principales, ahora usamos un sistema de mapeo personalizado, por el cual un URI de página virtual se asigna a una página específica .aspx (o.html). Esto tiene algunos beneficios:

  • Sus visitantes ven "más agradable" URI;
  • Usted es libre de reorganizar su sitio cuando lo considere oportuno, entre bastidores, sin romper los enlaces entrantes existentes;
  • Puede usar URI virtuales dinámicos, por ejemplo, en lugar de /Product.aspx?p=Blah, puede usar / Products / Blah

Tenemos nuestro propio sistema personalizado, pero creo que ASP.NET MVC ahora tiene esta característica incorporada.

(Si recorres esta ruta, puedes agregar asignaciones heredadas para URI de .html que apuntan a tus nuevas páginas .aspx).

Es posible que desee ver el espacio de nombres de ASP.NET System.Web.Routing, que se agregó en .NET 3.5 SP1, creo:

http://blogs.msdn.com/mikeormond/archive/2008/05/14/using-asp-net-routing-independent-of-mvc.aspx

http://msdn.microsoft.com/en -us / library / system.web.routing.aspx

Así es como manejamos una situación similar.

  1. Configure IIS para asignar la extensión html a ASP.Net en lugar de manejarlo directamente.

  2. En el controlador HttpApplication.BeginRequest vea si la solicitud se está realizando para un archivo html que se ha migrado a aspx si es así, entonces sirva la página aspx en lugar de redirigir la respuesta.

  3. En caso de que el archivo html no haya sido mapeado todavía, simplemente envíe el archivo estático html.

Como lo mencionó Stusmith, no debes dejar que tu tecnología subyacente quede expuesta (y ciertamente no es obligatorio) el aspecto de tus URI. La mejor manera es como se mencionó para no mostrar ninguna extensión, pero en la situación actual tal vez sea posible configurar el sistema de tal manera que los archivos .html se actúen como si fueran .aspx?

No sé lo primero acerca de .NET pero asumo que esto es posible sin tener que pasar por demasiados problemas.

El segundo mejor enfoque es volver a escribir los URI, pero eso requiere un trabajo adicional para el servidor (no mucho, pero se suma).

(No redireccione con una meta actualización. Cada otra solución es mejor.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top