Asp.net 如何为mvc站点创建google站点地图?

Asp.net 如何为mvc站点创建google站点地图?,asp.net,asp.net-mvc,sitemap,Asp.net,Asp.net Mvc,Sitemap,我想知道是否有人已经这样做了,或者有任何例子 关于如何为MVC网站创建Google站点地图 任何帮助或榜样都将不胜感激 我说的是: 最简单的方法是使用许多免费的站点地图构建器中的任意一个,它们将对您的站点进行爬网,跟踪链接,并为您生成一个站点地图XML文件 这里有一个可能给你一些想法的例子。基本上,它是根据路线值生成站点地图的。我用过,只是做了一点小改动 您需要将XNamespace添加到每个XElement中,否则Google会抛出虚拟对象 以下是我的版本: public ContentRes

我想知道是否有人已经这样做了,或者有任何例子 关于如何为MVC网站创建Google站点地图

任何帮助或榜样都将不胜感激

我说的是:

最简单的方法是使用许多免费的站点地图构建器中的任意一个,它们将对您的站点进行爬网,跟踪链接,并为您生成一个站点地图XML文件

这里有一个可能给你一些想法的例子。基本上,它是根据路线值生成站点地图的。

我用过,只是做了一点小改动

您需要将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发布了原始文章和代码。

因此,使用生成器将为站点中的“所有内容”创建一个链接。因此,如果你有一个卡片网站,你有大约十万个卡片项目,每个都有自己的链接,你可能会看到相同数量的链接。如果您想这样做,那么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://dragonflysco.com/catalog/finishings/19 
有关更高级的结构,请检查以下内容:
无耻的自我插入:我在生产中遇到奇怪的问题后创建了一个名为的库。您可以从任何操作方法提供站点地图文件,无需任何配置:

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);
    }
}
公共类SitemapController:控制器
{
公共行动结果索引()
{
列表节点=新列表
{
新的SitemapNode(Url.Action(“索引”、“主页”),
新建SitemapNode(Url.Action(“关于”,“主页”),
//其他节点
};
返回新的SitemapProvider().CreateSitemap(节点);
}
}

它还支持所有可用的。

Ta,这段代码不错。您可能需要添加根站点节点的另一个XElement。这段代码很棒,也很简单,我使用了它,并使用@Junto已经向Mike提议的添加项创建了它。他的网站位于,他的文章简单易懂,功能强大。不,我和他没有任何联系,只是想说声谢谢!非常感谢您和#MikeBrind如何动态创建站点地图xml。我有一个疑问。所以我们创建了站点地图xml文件,现在我如何在GoogleWebMaster中自动更新它。我的意思是,是否有
谷歌网站主Api
,以便我可以调用它并在那里更新我的sitemap.xml?或者我需要手动获取此文件并每次更新?SimpleMVCSutemap项目将在此行执行后动态地在项目中创建站点地图文件
return new SitemapProvider()。CreateSitemap(HttpContext,nodes)?@Thomas它是在调用此操作方法的每个请求上生成的。如果链接是静态的,您可以将其保存在文件中并作为内容提供。