Actualmente, un "Alias" en Sitecore generará varias rutas hacia el mismo elemento de contenido, lo que puede afectar negativamente al SEO en algunos casos.Cómo comprobar si el elemento de Sitecore está usando el alias
Estoy buscando una forma de comprobar programáticamente si la Página/Elemento/URL/Solicitud actual está usando un alias o no.
Tenía la esperanza de que sería algo a lo largo de las líneas de:
Sitecore.Web.WebUtil.IsAlias
Cualquier ideas sobre cómo comprobar los alias?
ACTUALIZACIÓN ------- -------
Aquí está mi solución actual que parece funcionar bien ... A menos que alguien tiene una idea mejor ?:
protected bool IsAlias
{
get
{
string fullPath = LinkManager.GetItemUrl(Sitecore.Context.Item);
return !HttpContext.Current.Request.RawUrl.StartsWith(fullPath, StringComparison.OrdinalIgnoreCase);
}
}
------ ACTUALIZACIÓN 2 ------
Aquí hay una solución de trabajo basada en las sugerencias de Yan. No creo que Sitecore.Context.Database.Aliases.GetTargetUrl() funcione a partir de Sitecore 6.4.1. así que tuve que improvisar un poco.
if (Sitecore.Configuration.Settings.AliasesActive &&
Sitecore.Context.Database.Aliases.Exists(HttpContext.Current.Request.RawUrl))
{
const string format = "<link rel=\"canonical\" href=\"{0}://{1}{2}\"/>";
Item targetItem = Sitecore.Context.Database.GetItem(Sitecore.Context.Database.Aliases.GetTargetID(HttpContext.Current.Request.RawUrl));
return String.Format(format, HttpProtocol, HttpContext.Current.Request.Url.Host, LinkManager.GetItemUrl(targetItem));
}
Gracias, esta es una solución mucho mejor. Actualicé mi publicación con un nuevo código. –