首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MvcSiteMapProvider MVC5 CanonicalUrl

MvcSiteMapProvider MVC5 CanonicalUrl
EN

Stack Overflow用户
提问于 2014-09-17 16:28:25
回答 1查看 926关注 0票数 1

我不知道MVC.SiteMap有什么问题,当我检查页面源时,它不会显示CanonicalUrl。在_layout文件中,我有以下内容:

代码语言:javascript
运行
复制
@Html.MvcSiteMap().CanonicalTag()
@Html.MvcSiteMap().MetaRobotsTag()

以下是MVC.Sitemap:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8" ?>
<mvcSiteMap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-4.0"
            xsi:schemaLocation="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-4.0 MvcSiteMapSchema.xsd">

  <mvcSiteMapNode title="Home" controller="Home" action="Index"  metaRobotsValues="noindex" CanonicalUrl="/Home/Index">
    <mvcSiteMapNode title="Healthcare Services" controller="Home" action="Healthcare" metaRobotsValues="noindex follow"  CanonicalUrl="/Home/Healthcare"/>
    <mvcSiteMapNode title="About" controller="Home" action="About"  metaRobotsValues="noindex" CanonicalUrl="/Home/About"/>
    <mvcSiteMapNode title="Training" controller="Home" action="Training" metaRobotsValues="noindex follow"  canonicalUrl="/Home/Training"/>
    <mvcSiteMapNode title="Environmental Services" controller="Home" action="Environment" metaRobotsValues="follow" canonicalUrl="/Home/Environment"/>
    <mvcSiteMapNode title="IT Services" controller="Home" action="Internet" metaRobotsValues="noindex"  CanonicalUrl="/Home/Internet"/>
    <mvcSiteMapNode title="Our Clients" controller="Home" action="Clients" metaRobotsValues="noindex noarchive"  canonicalUrl="/Home/Clients"/>
    <mvcSiteMapNode title="Privacy" controller="Home" action="Privacy" metaRobotsValues="noindex noarchive" canonicalUrl="/Home/Privacy"/>
  </mvcSiteMapNode>
</mvcSiteMap>

会很感激你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-17 18:28:36

规范标记用于指示两个URL指向相同的资源(通常是另一个具有相同或非常相似内容的页面)。

在您的配置中,您使用自己的控制器和操作配置每个节点,但没有指示有另一个具有相同内容的节点。由于每个节点都是自己的规范URL,因此将不会显示标记。它只显示在具有匹配的canonicalUrl或canonicalKey的备用页面上。例如,如果您的/Home/Training/Home/Environment操作都提供相同的内容,并且您希望指定/Home/Training是原始的,而/Home/Environment是副本,那么您可以像下面这样配置节点:

代码语言:javascript
运行
复制
<mvcSiteMapNode title="Training" controller="Home" action="Training" metaRobotsValues="noindex follow"/>
<mvcSiteMapNode title="Environmental Services" controller="Home" action="Environment" metaRobotsValues="follow" canonicalUrl="/Home/Training"/>

然后,您将看到只为/Home/Environment页面生成的规范标记,其中包含/Home/Training页面的绝对URL。

但是,一个更可维护的选项是使用canonicalKey而不是canonicalUrl。这样,如果/Home/Training上的URL发生变化,您就不必为指定它为规范节点的每个节点更新它。

代码语言:javascript
运行
复制
<mvcSiteMapNode title="Training" controller="Home" action="Training" metaRobotsValues="noindex follow" key="Home_Training"/>
<mvcSiteMapNode title="Environmental Services" controller="Home" action="Environment" metaRobotsValues="follow" canonicalKey="Home_Training"/>

如果您指定的规范页不是由MVC托管的,或者是网站外部的,CanonicalUrl就在那里。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25895766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档