Метод 1: использование веб-API элементов Sitecore
Веб-API элементов Sitecore обеспечивает программный доступ к элементам Sitecore. Мы можем использовать этот API, чтобы получить путь к элементу и создать чистый URL-адрес без сегмента «sitecore/content».
string itemId = "{Item ID}";
Item item = Sitecore.Context.Database.GetItem(itemId);
string cleanUrl = item.Paths.Path.Substring(10); // Removes "sitecore/content" from the path
Метод 2: преобразователь настраиваемых элементов
Настраиваемый преобразователь элементов перехватывает конвейер обработки URL-адресов и изменяет запрошенный URL-адрес. Внедрив специальный преобразователь элементов, мы можем удалить сегмент «sitecore/content» из URL-адресов.
public class CustomItemResolver : HttpRequestProcessor
{
public override void Process(HttpRequestArgs args)
{
string requestedUrl = args.Url.ItemPath;
if (requestedUrl.StartsWith("/sitecore/content"))
{
args.Url.ItemPath = requestedUrl.Substring(17); // Removes "sitecore/content" from the URL
}
}
}
Метод 3: Модуль перезаписи URL-адресов
Модуль перезаписи URL-адресов позволяет определять правила перезаписи URL-адресов. Мы можем создать правило для удаления сегмента «sitecore/content» из URL-адресов с помощью регулярных выражений.
<rewrite>
<rules>
<rule name="RemoveSitecoreContent" stopProcessing="true">
<match url="^sitecore/content/(.*)$" />
<action type="Rewrite" url="{R:1}" />
</rule>
</rules>
</rewrite>
Метод 4: настройка Sitecore LinkManager
LinkManager Sitecore обеспечивает контроль над созданием URL-адресов. Настроив LinkManager, мы можем настроить сгенерированные URL-адреса и удалить сегмент «ядро сайта/контент».
<configuration>
<sitecore>
<linkManager>
<providers>
<add name="sitecore">
<patch:attribute name="generateUrlsWithLanguageEmbedding">false</patch:attribute>
<patch:attribute name="alwaysIncludeServerUrl">false</patch:attribute>
<patch:attribute name="encodeNames">true</patch:attribute>
<patch:attribute name="useDisplayName">false</patch:attribute>
<patch:attribute name="shortenUrls">true</patch:attribute>
<patch:attribute name="addAspxExtension">false</patch:attribute>
<patch:attribute name="lowercaseUrls">true</patch:attribute>
<patch:attribute name="useItemLanguage">false</patch:attribute>
<patch:attribute name="removeSitecoreContent">true</patch:attribute>
</add>
</providers>
</linkManager>
</sitecore>
</configuration>