Я пытаюсь динамически создать карту сайта для своего сайта, и я не хочу, чтобы это было (я полагаю, это необходимо), расположенное на корневом уровне, т.е. Domain.com/sitemap.xml До сих пор у меня есть результат действия в домашнем контроллере, как это:Динамически создайте карту сайта и проложите ее до корневого уровня
public ActionResult SiteMap()
{
...
return this.Content(xml, "text/xml");
}
Это прекрасно работает для создания файла, но он находится в Domain.com/Home/Sitemap и мой понимание заключается в том, что карта сайта должна быть расположена на корневом уровне. Есть ли способ переписать URL-адрес или добавить новый маршрут для него в файл Global.asax? По умолчанию файл Global.asax содержит следующее:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Так что, похоже, как это может быть место, чтобы добавить что-то вроде проверки, если запрошенный маршрут sitemap.xml и просто перенаправить его на главную/Карта сайта (или просто подайте карту сайта прямо там). Я не уверен, как это сделать, если это возможно, поскольку я никогда не сталкивался с разделом RegisterRoutes.
Другой проблемой, которая может возникнуть, будет расширение .xml, я бы подумал, что IIS подумает, что это файл на диске и игнорировать маршрут вместе.
Я иду по правильному пути или есть лучший способ сделать это? Или это невозможно, и мне нужно просто физически создать файл?
Редактировать (исправить) Мне просто пришло в голову, что я думал об этом неправильно. Все, что мне нужно сделать, это создать или обновить файл Sitemap и сохранить его в /sitemap.xml периодичность или каждый раз, когда страница будет добавлена. Я не могу поверить, что это не было очевидно для меня.
Раньше я просматривал провайдер MVC SiteMap, но я не думал, что он создал карту сайта на корневом уровне. Похоже, вы должны вручную добавить файл Sitemap. Я ошибаюсь? –
Это так, вам просто нужно зарегистрировать контроллер, который он включает в таблицу маршрутов: https://github.com/maartenba/MvcSiteMapProvider/wiki/Exporting-the-sitemap-for-search-engine-indexing –