Pregunta

Actualmente estoy tratando de eliminar las extensiones de .aspx de las URL de Sitecore.Un blog sugiere que cambiar lo siguiente solucionaría este problema:

<add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel" addAspxExtension="true"

El problema es que esto no funciona para todos los códigos en nuestros sitios web, ya que algunos controles personalizados obligan al uso de .aspx.

Lo que estaba pensando es que si puedo entrar en la tubería antes de que se envíe una respuesta al usuario.el siguiente código

public class CustomExecuteRequest : Sitecore.Pipelines.HttpRequest.ExecuteRequest
{
    protected override void PerformRedirect(string url)
    {
        base.PerformRedirect(url.Replace(".aspx" , ""));
    }

    public override void Process(Sitecore.Pipelines.HttpRequest.HttpRequestArgs args)
    {
        PerformRedirect(args.Url.FilePathWithQueryString.Replace(".aspx", ""));

        //args.Url.FilePathWithQueryString = args.Url.FilePathWithQueryString.Replace(".aspx", "");

        //base.Process(args);
    }
}

Se está poniendo el código y esta solución funciona, sin embargo, está realizando una redirección que realmente no es lo que quiero hacer, preferiría tener una solicitud regular con la URL limpiada.El problema es que la variable ARGS tiene un campo de solo lectura (comentado a continuación) que se usa para crear realmente la URL.

¿Alguien tiene alguna idea sobre cómo puedo cambiar la URL aquí, o tal vez en otro lugar en la tubería?

¿Fue útil?

Solución

Lo que está haciendo dentro de la línea de HTTPRequestPipeline es ciertamente la forma correcta de cambiar los enlaces.Al igual que con cualquier aplicación web, cualquier enlace en la página se devuelva al cliente como contenido de la solicitud HTTP.La redirección durante la solicitud no cambiará el contenido renderizado.

La única forma de hacerlo es la forma difícil:

  • Encuentre todos los lugares en su fuente que generen los enlaces que contienen .aspx.Una búsqueda de "ASPX" dentro de la solución podría ayudar
  • Encuentre todas las referencias a las urlopciones y para LinkManager y verifique si AdDaspXextension= True se configura manualmente como urloptions.

Algo así siempre produciría un final de .aspx, por ejemplo:

var urlOptions = UrlOptions.DefaultOptions;
urlOptions.AddAspxExtension = true;

LinkManager.GetItemUrl(item, urlOptions);

Otros consejos

Ya sea la forma difícil de cambiar todos sus enlaces para usar Link Manager o si está atado por tiempo, sugerir algo tal vez fuera de SiteCore y use IIS Urlrewrite Module.

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