Как создать Google Sitemap для сайта MVC? - PullRequest
26 голосов
/ 19 мая 2009

Мне было интересно, сделал ли кто-нибудь это еще или есть примеры о том, как создать Google Sitemap для веб-сайта MVC.

Любая помощь или пример будут оценены.

Я говорю об этом: https://www.google.com/webmasters/tools/docs/en/protocol.html

Ответы [ 5 ]

22 голосов
/ 15 декабря 2009

Я использовал Код Sitemap Майка Бринда , с небольшим изменением.

Вам необходимо добавить XNamespace к каждому элементу XElement, в противном случае Google плюет на пустышку.

Вот моя версия:

public ContentResult Index()
        {
            XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9";
            const string url = "http://www.website.com/controller/action/{0}";
            var items = _db.DataAccessHere();
            var sitemap = new XDocument(
                new XDeclaration("1.0", "utf-8", "yes"),
                new XElement(ns + "urlset",
                    from i in items
                    select
                    //Add ns to every element.
                    new XElement(ns + "url", 
                      new XElement(ns + "loc", string.Format(url, i.ItemID)),
                          new XElement(ns + "lastmod", String.Format("{0:yyyy-MM-dd}", i.DateAddedUTC)),
                      new XElement(ns + "changefreq", "monthly"),
                      new XElement(ns + "priority", "0.5")
                      )
                    )
                  );
            return Content(sitemap.ToString(), "text/xml");
        }

Благодарим Майка за публикацию оригинальной статьи и кода.

6 голосов
/ 14 декабря 2013

Бесстыдный самоподключаемый модуль: я создал библиотеку с именем SimpleMvcSitemap после странных проблем с MvcSiteMapProvider на производстве. Вы можете обслуживать файлы карты сайта любым методом действия без какой-либо конфигурации:

public class SitemapController : Controller
{
    public ActionResult Index()
    {
        List<SitemapNode> nodes = new List<SitemapNode>
        {
            new SitemapNode(Url.Action("Index","Home")),
            new SitemapNode(Url.Action("About","Home")),
            //other nodes
        };

        return new SitemapProvider().CreateSitemap(nodes);
    }
}

Он также поддерживает все доступные Google Sitemap .

5 голосов
/ 19 мая 2009

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

Вот, например,

3 голосов
/ 19 мая 2009

Вот пост , который может дать вам некоторые идеи. В основном он генерирует карту сайта из значений маршрута.

2 голосов
/ 25 октября 2010

так вот в чем дело, генераторы просто создадут ссылку для «всего» на вашем сайте. Так что, если у вас есть, скажем, карточный сайт, и у вас есть около ста тысяч карточных элементов, у каждого из которых есть своя собственная ссылка и все, вы, вероятно, увидите такое же количество ссылок. Если вы хотите этого, тогда вам следует использовать генераторы xml sitemap.

Но если вы хотите, чтобы он был немного персонализированным, вы можете сделать это:

Список всех основных разделов ваших сайтов. Это легко сделать, учитывая, что большинство MVC используют что-то вроде «чистых URL». вроде как "site.com/items/phones"

Создайте документ XML в зависимости от используемого вами языка.

Как минимум, у вас должен быть такой документ:

<?xml version="1.0" encoding="utf-8"?> 
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
      <url> 
        <loc>http://dragonflysco.com/catalog/finishings/19</loc> 
      </url> 
      <!-- more here -->
    </urlset>

Для более продвинутой структуры, проверьте это: http://www.google.com/support/webmasters/bin/answer.py?answer=183668

...