Question

J'essaie actuellement de supprimer les extensions .aspx de Sitecore URL.Un blog suggère que la modification des éléments suivants résoudrait ce problème:

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

Le problème est que cela ne fonctionne pas pour tous les codes de nos sites Web car certaines contrôles personnalisées force l'utilisation de .aspx.

Ce que je pensais, c'est que si je peux entrer dans le pipeline avant que une réponse soit renvoyée à l'utilisateur, je pourrais modifier l'URL en une personne plus sympathique (no .aspx), j'essaie de faire cela en utilisantle code suivant

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

Le code est frappé et cette solution fonctionne, mais elle effectue une redirection qui n'est vraiment pas ce que je veux faire, je préférerais juste avoir une demande régulière avec l'URL nettoyée.Le problème est que la variable args comporte un champ en lecture seule (commenté ci-dessous) utilisé pour créer réellement l'URL.

Quelqu'un a-t-il des idées sur la manière dont je peux changer l'URL ici ou peut-être ailleurs dans le pipeline?

Était-ce utile?

La solution

Ce que vous faites à l'intérieur du HTTPequestpipeleline n'est certainement pas la bonne façon de changer de liens.Comme pour toute application Web, tous les liens de la page sont renvoyés au client en tant que contenu de la demande HTTP.Redirection pendant la demande ne changera pas le contenu rendu.

Le seul moyen de faire c'est la solution difficile:

  • Trouvez tous les endroits de votre source générant les liens contenant .aspx.Une recherche "aspx" à l'intérieur de la solution pourrait aider
  • Recherchez toutes les références aux Urloptions et à LinkManager et vérifiez si addaspxextension= true est défini manuellement comme des urloptions.

Quelque chose comme ça produirait toujours un .aspx se terminant par exemple:

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

LinkManager.GetItemUrl(item, urlOptions);

Autres conseils

soit le moyen difficile de changer tous vos liens pour utiliser Link Manager ou si vous êtes à court de temps, suggérez quelque chose peut-être à l'extérieur de Sitecore et utilisez le module IIS Urrrewrite.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top