Como verificar se o item Sitecore está usando o alias
tualmente, um "Alias" no Sitecore produzirá várias rotas para o mesmo item de conteúdo, o que pode afetar negativamente o SEO em alguns caso
Estou procurando uma maneira de verificar programaticamente se a Página / Item / URL / Solicitação atual está usando um alias ou nã
Eu esperava que houvesse algo parecido com:
Sitecore.Web.WebUtil.IsAlias
Alguma idéia de como procurar aliase
-------ATUALIZAR------
Aqui está minha solução atual que parece funcionar muito bem ... A menos que alguém tenha uma idéia melhor?:
protected bool IsAlias
{
get
{
string fullPath = LinkManager.GetItemUrl(Sitecore.Context.Item);
return !HttpContext.Current.Request.RawUrl.StartsWith(fullPath, StringComparison.OrdinalIgnoreCase);
}
}
------ ATUALIZAÇÃO 2 ------
@Here é uma solução funcional baseada nas sugestões de Yan. Não acredito que Sitecore.Context.Database.Aliases.GetTargetUrl () esteja funcionando a partir do Sitecore 6.4.1. então eu tive que improvisar um pouco.
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));
}