Pregunta

Me gustaría que mi sitio web creara enlaces optimizados para motores de búsqueda para contenido dinámico (en lugar de localizar datos a través de la cadena de consulta). Asi que:

mysite/SomeModifiableNname.aspx
en lugar de

mysite/DynamicContent.aspx?entryID=2345
.

Además de un controlador 404 inteligente que redirige las solicitudes, o un controlador de tipo MIME personalizado en IIS, ¿hay una buena solución para esto en ASP.NET?
Teniendo en cuenta que el nombre del archivo de la página debe poder cambiarse en tiempo de ejecución.

¿Fue útil?

Solución 4

Gracias por los pensamientos de todos. Con la información proporcionada, encontré lo que creo que es la solución que necesito:

En Global.asax (o mediante un HttpModule), escuche el evento BeginRequest y aplique la ruta Context.Rewrite allí:

void Application_BeginRequest(object sender, EventArgs e)
{
    string fullOrigionalpath = Request.Url.ToString();

    if (fullOrigionalpath.ToLower().Contains("/Games".ToLower()))
    {
        Context.RewritePath("Default.aspx?id=Games");
    }

}

Y luego, en el método OnPreInit de la página que manejará estas solicitudes, la ruta de Reescritura debe aplicarse nuevamente para que PostBacks funcione adecuadamente:

protected override void OnPreInit(EventArgs e)
{
    base.OnPreInit(e);

    if (Request.QueryString["id"] == null)
        return;
    if (Request.QueryString["id"].ToLower().Equals("games"))
        Context.RewritePath("Games", "", "id=Games");
}

La clave que hace que esto funcione mejor que muchos de los módulos de reescritura de URL que encontré es que las rutas pueden ser dinámicas. Es decir, las URL creadas pueden estar basadas en datos.

Otros consejos

Puede usar un HttpHandler , como se ve aquí .

este es un tema amplio generalmente conocido como reescritura de URL ...

hay varias formas de lograr esto. Sugeriría buscar en el módulo de reescritura de IIS.

Probablemente también debería investigar las capacidades de enrutamiento de URL que se desarrollaron para MVC y están disponibles en ASP.NET 3.51

ACTUALIZACIÓN: Desearía saber más sobre tus intenciones. Esa última oración me confunde.

He hecho esto en el pasado con UrlRewrite.Net. También hay una instalación integrada para esto en IIS7

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