Domanda

Attualmente sto cercando di rimuovere le estensioni .aspx dagli URL di Sitecore.Un blog suggerisce che la modifica del seguente risolverebbe questo problema:

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

Il problema è che ciò non funziona per tutti i codici nei nostri siti Web poiché alcuni controlli personalizzati forzano l'utilizzo di .aspx.

Quello che pensavo è che se posso entrare nella tubazione prima che venga inviata una risposta all'utente di poter cambiare l'URL in uno che è più amichevole SEO (no .aspx), sto cercando di fare questo usandoil seguente codice

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);
    }
}
.

Il codice è colpito e questa soluzione funziona, tuttavia si sta eseguendo un reindirizzamento che non è proprio quello che voglio fare, preferirei solo avere una richiesta regolare con l'URL pulito.Il problema è che la variabile ARGS ha un campo di sola lettura (commentato di seguito) che viene utilizzato per creare effettivamente l'URL.

Qualcuno ha idee su come posso cambiare l'URL qui, o forse da qualche altra parte nella tubazione?

È stato utile?

Soluzione

Cosa stai facendo all'interno della httprequestpipeline non è certamente il modo corretto per cambiare i collegamenti.Come con qualsiasi applicazione Web, eventuali collegamenti nella pagina vengono restituiti al client come contenuto della richiesta HTTP.Reindirizzamento durante la richiesta non cambierà il contenuto reso.

L'unico modo per farlo è il modo più duro:

    .
  • Trova tutti i luoghi della tua fonte che genera i link contenenti .aspx.Una ricerca per "Aspx" all'interno della soluzione potrebbe aiutare
  • Trova tutti i riferimenti a urloptions e a LinkManager e controlla se addspxextension= true è impostato manualmente come urnoptions.

Qualcosa come questo produrrebbe sempre un finale .aspx ad esempio:

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

LinkManager.GetItemUrl(item, urlOptions);
.

Altri suggerimenti

O il modo difficile di modificare tutti i tuoi collegamenti per utilizzare Link Manager o se sei legato per il tempo, suggerisci qualcosa forse al di fuori di Sitecore e utilizzare il modulo IIS UrlRewrite.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top