В моем приложении sitefinity, когда я создаю карту сайта, она успешно создается, но карта сайта показывает префикс двух языков в URL-адресах для всех узлов.
Как сгенерированный узел URL в моей карте сайта
<url>
<loc>http://www.example.net/en/en/individual/customer-
service</loc>
<priority>1</priority>
<xhtml:link rel = "alternate" hreflang = "en"
ref = "http://www.example.net/en/en/individual/customer-service" />
<xhtml:link rel = "alternate" hreflang = "ar"
ref = "http://www.example.net/en/ar/individual/customer-service" />
</url>
But I expect the generated url node like this
<url>
<loc>http://www.example.net/en/individual/customer-
service</loc>
<priority>1</priority>
<xhtml:link rel = "alternate" hreflang = "en"
ref = "http://www.example.net/en/individual/customer-service" />
<xhtml:link rel = "alternate" hreflang = "ar"
ref = "http://www.example.net/ar/individual/customer-service" />
</url>
Где я нашел URLRulesClient и URLRulesServer со следующими правилами URLRulesClient RegularExpressionFilter -->[^\p{L}\-\!\$()\=\@\d_\'\.]+|\.+$ Заменить на -- > - ToLower --> проверено Trim --> проверено URLRulesServer RegularExpressionFilter -->[^\w\-\!\$\'()\=\@\d_]+ Заменить на --> - ToLower --> проверено Обрезать --> снято
Так ничего на родительском уровне, то есть в настройках URL-адреса сайта?
@VeselinVasilev на родительском уровне «Настройки URL-адреса сайта» все поля пусты или не отмечены флажками.
Очень странно, есть ли у вас какие-либо собственные стратегии URL? Это находится в разделе «Администрирование»> «Настройки»> «Дополнительно»> «Ресурсы»> «Стратегии UrlLocalizationStrategies».
Да! В разделе "SubFolderUrlLocalizationStrategy" я добавил параметр Ключ --> "includeSubfoderPrefixForDefaultLanguage" и Стоимость --> "True".
Это объяснило бы это, если в модуле карты сайта есть ошибка. Попробуйте временно удалить параметр, перезапустите сайт и повторно создайте карту сайта, чтобы посмотреть, исправит ли это проблему.
Установка этого значения «includeSubfoderPrefixForDefaultLanguage» -> «False» создаст правильные URL-адреса в карте сайта. Но мне нужно сохранить это значение «True». Это какое-то другое решение?
Подытожу, что обсуждалось в комментариях:
Проблема вызвана тем, что SubFolderUrlLocalizationStrategy имел следующий параметр: includeSubfoderPrefixForDefaultLanguage = Истина
Удаление параметра решает проблему.
Кажется, это ошибка в модуле Sitemap в этой версии Sitefinity, поскольку я не видел ее, например, в версии 10.2.
Один из способов сохранить параметр и решить проблему — подписаться на событие ISitemapGeneratorBeforeWriting и изменить записи карты сайта перед их сохранением, например. Заменить("/ru/ru/", "/ru/")
В этой статье показано, как: https://knowledgebase.progress.com/articles/Article/How-to-modify-the-entries-in-sitefinity-sitemap-using-SitemapGeneratorBeforeWriting-event
protected void Application_Start(object sender, EventArgs e)
{
Bootstrapper.Initialized += Bootstrapper_Initialized;
}
void Bootstrapper_Initialized(object sender, Telerik.Sitefinity.Data.ExecutedEventArgs e)
{
if (e.CommandName == "Bootstrapped")
{
EventHub.Subscribe<ISitemapGeneratorBeforeWriting>(evt => SitemapGeneratorBeforeWritingHandler(evt));
}
}
void SitemapGeneratorBeforeWritingHandler(ISitemapGeneratorBeforeWriting @event)
{
var entries = @event.Entries;
// CRUD operations over the sitemap entries goes here
}
Можете ли вы перейти в «Администрирование»> «Настройки»> «Дополнительно»> «Система»> «Настройки URL-адреса сайта» и посмотреть, есть ли там что-нибудь?