我想知道是否还有人这样做过或有任何例子 关于如何为MVC网站创建Google Sitemap。
任何帮助或示例都将不胜感激。
我正在谈论这件事: https://www.google.com/webmasters/tools/docs/en/protocol.html答案 0 :(得分:22)
我使用Mike Brind's Sitemap code进行了一些小改动。
您需要将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");
}
感谢Mike发布原始文章和代码。
答案 1 :(得分:6)
无耻的自我插件:在制作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 extensions。
答案 2 :(得分:5)
最简单的方法是使用许多免费站点地图构建器中的任何一个 - 他们将抓取您的站点,关注链接,并为您生成站点地图XML文件。
答案 3 :(得分:3)
这是post,可能会给你一些想法。基本上它从路由值生成站点地图。
答案 4 :(得分:2)
所以这就是事情,使用生成器只会为您网站中的“所有内容”创建一个链接。所以,如果你有,让我们说一个卡片网站,你有十万个卡片项目,每个卡片项目都有自己的链接,所有,你可能会看到相同数量的链接。如果你想要,那么xml站点地图生成器就是你的选择。
但如果你想要一点点个性化,你可以这样做:
列出您网站的所有主要部分。考虑到大多数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