I was wondering if anyone has done this yet or has any examples on how to create a Google Sitemap for an MVC website.
Any help or example would be appreciated.
Im talking about this: https://www.google.com/webmasters/tools/docs/en/protocol.html
I was wondering if anyone has done this yet or has any examples on how to create a Google Sitemap for an MVC website.
Any help or example would be appreciated.
Im talking about this: https://www.google.com/webmasters/tools/docs/en/protocol.html
I used Mike Brind's Sitemap code, with a small change.
You need to add the XNamespace to every XElement, otherwise Google spits the dummy.
Here's my version:
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");
}
Credit to Mike for posting the original article and code.
Google Web Master Api
, so that I can call that and update my sitemap.xml there ? Or I need to manually take this file and update there every time ? –
Aeolis Shameless self plug: I created a library called SimpleMvcSitemap after having weird issues with MvcSiteMapProvider on production. You can serve sitemap files from any action method without any configuration:
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);
}
}
It also supports all the Google Sitemap extensions available.
return new SitemapProvider().CreateSitemap(HttpContext, nodes);
? –
Stratigraphy The easiest way would be to use any one of a number of free sitemap builders out there - they will crawl your site, follow links, and generate a sitemap XML file for you.
Here's a post that might give you some ideas. Basically it generates a sitemap from route values.
so here's the thing, using generators will just about create a link for "everything" in your site. So if you have, let's say a card site, and you have like a hundred thousand card items, each with it's own link and all, you'll likely see the same amount of links. If you want that, then xml sitemap generators are the way to go.
But if you want it a little bit personalized, you can do these:
List all major sections of your sites. This is easy to do considering that most MVCs are using the "clean URLs" sort of thing. kinda like "site.com/items/phones"
Create an XML document, depending on the language you're using.
At the minimum, you should have a document like this:
<?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>
For more advanced structure, check this: http://www.google.com/support/webmasters/bin/answer.py?answer=183668
© 2022 - 2024 — McMap. All rights reserved.