Автоматически генерировать карты сайта для всех контроллеров

Я пытаюсь создать sitemap.xml файл автоматически для моего сайта Asp.Net Mvc 5. Я установил MvcSiteMapProvider.MVC5 4.6.1 пакет от Nuget, и я прочитал руководство по началу работы. Насколько я понимаю, я должен добавить ВСЕ контроллеры и их действия в свой файл конфигурации. Однако где-то в документе сказано, что пакет автоматически отслеживает посещенные URL-адреса и генерирует их узлы в sitemap.xml, "бесплатно"! Я посетил несколько страниц и обновил sitemap.xml файл, но он не изменился. Я что-то пропустил? Этот пакет действительно обеспечивает динамический sitemap.xml файлы?

1 ответ

Решение

Прежде всего, \sitemap.xml Конечная точка - это не "файл", это действие контроллера, которое динамически генерирует XML на основе конфигурации SiteMap. Он генерирует XML для отправки поисковым системам согласно sitemaps.org.

Поскольку эта конечная точка предназначена для поисковых систем, нет смысла отслеживать посещения пользователя на сайте и показывать страницы, посещенные пользователем, в этом результате. Вместо этого он содержит все настроенные страницы (либо по URL, либо по контроллеру, действию и другим значениям маршрута).

Тем не менее, основная цель MvcSiteMapProvider - предоставить меню и цепочки крошек для отдельных страниц. Опять же, это не работает путем отслеживания позиции пользователя, оно работает путем определения относительной позиции (по отношению к другим узлам) URL-адреса в SiteMap. Для получения дополнительной информации прочитайте, как заставить MvcSiteMapProvider запомнить позицию пользователя.

Вам не обязательно добавлять все действия контроллера в MvcSiteMapProvider, технически вам нужно только добавить URL-адреса, которые вам нужны, проиндексированные поисковыми системами. И тогда вы получаете файлы Sitemap XML бесплатно.

Однако для страниц, которые не нуждаются в индексации (например, страницы администрирования), можно использовать комбинацию preservedRouteParameters, [TitleAttribute], а также ISiteMapNodeVisibilityProvider подделать цепочку хлебных крошек, чтобы вам не приходилось добавлять узел для каждой записи в базе данных, чтобы он функционировал, как описано в статье выше.

Другие вопросы по тегам