2014-09-17 2 views
1

MVC.SiteMap의 문제점을 파악할 수 없으며 페이지 소스를 확인할 때 CanonicalUrl이 표시되지 않습니다.MvcSiteMapProvider MVC5 CanonicalUrl

@Html.MvcSiteMap().CanonicalTag() 
@Html.MvcSiteMap().MetaRobotsTag() 
여기

입니다 MVC.Sitemap : _layout 파일에서 나는 다음이

<?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> 

이 당신의 제안을 감사하겠습니다.

답변

1

표준 태그는 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 페이지에 대해서만 생성되고 절대 URL은 /Home/Training 페이지로 생성됩니다.

그러나 canonicalUrl 대신 canonicalKey를 사용하는 것이 유지 관리가 더 쉬운 옵션입니다. 이렇게하면 /Home/Training에서 URL이 변경되면이를 정식 노드로 지정하는 모든 노드에 대해 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에 의해 호스팅 또는 웹 사이트의 외부하지 않는 표준 페이지를 지정하는 경우가있다.

+0

자세한 답변 해 주셔서 감사합니다. 매우 유용합니다. – hncl

관련 문제