Obecnie "Alias" w Sitecore wytworzy wiele tras do tego samego elementu treści, co może negatywnie wpłynąć na SEO w niektórych przypadkach.Jak sprawdzić, czy element Sitecore używa aliasu
Szukam sposobu, aby programowo sprawdzić, czy bieżąca strona/element/URL/żądanie używa aliasu, czy nie.
Miałem nadzieję, że będzie coś wzdłuż linii:
Sitecore.Web.WebUtil.IsAlias
jakieś pomysły w jaki sposób sprawdzić, aliasy?
------- ------- UPDATE
Oto moje obecne rozwiązanie, które wydaje się działać dobrze ... Chyba że ktoś ma lepsze pomysły ?:
protected bool IsAlias
{
get
{
string fullPath = LinkManager.GetItemUrl(Sitecore.Context.Item);
return !HttpContext.Current.Request.RawUrl.StartsWith(fullPath, StringComparison.OrdinalIgnoreCase);
}
}
------ AKTUALIZACJA 2 ------
Oto działające rozwiązanie oparte na sugestiach Yana. Nie wierzę, Sitecore.Context.Database.Aliases.GetTargetUrl() działa od Sitecore 6.4.1. więc musiałem trochę improwizować.
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));
}
Dzięki, jest to o wiele lepsze rozwiązanie. Zaktualizowałem swój wpis nowym kodem. –