MvcSiteMapProvider MVC5 CanonicalUrl
本文关键字:CanonicalUrl MVC5 MvcSiteMapProvider | 更新日期: 2023-09-27 18:22:17
我不知道MVC.SiteMap出了什么问题,当我检查页面源时,它不会显示CanonicalUrl。在布局文件中,我有以下内容:
@Html.MvcSiteMap().CanonicalTag()
@Html.MvcSiteMap().MetaRobotsTag()
这是MVC。网站地图:
<?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>
非常感谢您的建议。
规范标记用于指示2个URL指向相同的资源(通常是另一个具有相同或非常相似内容的页面)。
在您的配置中,您使用自己的控制器和操作来配置每个节点,而不指示存在具有相同内容的另一个节点。由于每个节点都是自己的规范URL,因此不会显示标记。它只显示在具有匹配的canonicalUrl或canonicalKey的备用页面上。例如,如果您的/Home/Training
和/Home/Environment
操作都提供相同的内容,并且您希望指定/Home/Training
是原始内容,/Home/Environment
是副本,则可以如下配置节点:
<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发生更改,则不必为指定为规范节点的每个节点更新它。
<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"/>
CanonicalUrl在那里,以防您指定的规范页面不是MVC托管的或是网站外部的。