要做到這一點,你需要2個獨立的節點,並確保每個人都有一個唯一的URL。 MvcSiteMapProvider要求每個節點都有唯一的路由簽名才能運行。每個節點將被放置爲相應類別的子節點。
您可以通過添加一個值的查詢字符串或改變你的路線,所以你必須在每種情況下,一個完全不同的URL進行唯一的URL。在每種情況下您都擁有唯一的URL並配置了路由信息以在節點中創建每個URL後,麪包屑將按預期工作。
<mvcSiteMapNode title="All People" controller="Person" action="AllPeople" key="AllPeople">
<mvcSiteMapNode title="Create" controller="Person" action="Create" category="AllPeople" />
</mvcSiteMapNode>
<mvcSiteMapNode title="People" controller="Person" action="Index">
<mvcSiteMapNode title="Create" controller="Person" action="Create" />
</mvcSiteMapNode>
結果:
All People > Create (URL is /Person/Create?category=AllPeople)
People > Create (URL is /Person/Create)
但是,你需要做的,如果你的重複頁面是面向Internet一兩件事 - 增加一個規範的標籤。這將告訴搜索引擎你打算在2個不同的URL上放置相同的內容。您可以決定要在索引中顯示哪個特定的URL,然後將canonicalUrl與該URL或canonicalKey與該節點的鍵一起添加到「重複」節點。
<mvcSiteMapNode title="All People" controller="Person" action="AllPeople" key="AllPeople">
<mvcSiteMapNode title="Create" controller="Person" action="Create" category="AllPeople" canonicalKey="CreatePerson" />
</mvcSiteMapNode>
<mvcSiteMapNode title="People" controller="Person" action="Index">
<mvcSiteMapNode title="Create" controller="Person" action="Create" key="CreatePerson" />
</mvcSiteMapNode>
然後添加一個@Html.MvcSiteMap().CanonicalTag()
HTML幫助到<head></head>
部分(通常在佈局頁),並在必要時MvcSiteMapProvider將自動生成規範的標籤。
<head>
<meta charset="utf-8" />
<title>@Html.MvcSiteMap().SiteMapTitle() - My ASP.NET MVC Application</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
@Html.MvcSiteMap().CanonicalTag()
@Html.MvcSiteMap().MetaRobotsTag()
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
的更多信息:
http://www.shiningtreasures.com/post/2013/08/10/mvcsitemapprovider-4-seo-features#canonical-tag https://github.com/maartenba/MvcSiteMapProvider/wiki/Multiple-Navigation-Paths-to-a-Single-Page http://www.mattcutts.com/blog/canonical-link-tag/
一定要檢查出的第一篇文章的代碼下載一個工作演示。