ASP.NET Core 웹 사이트에 검색 엔진 메타 데이터를 쉽게 추가하여 작성하려는 코드 작성에 집중할 수 있습니다. 세 가지를 제공합니다.
<meta> 태그 더 이상 이러한 별도의 프로토콜 각각의 형식을 조회하거나 <meta> 태그로 HTML을 오염시킬 필요가 없습니다.
또한 런타임에 이러한 파일이 생성되는 방식의 동작을 정의 할 수있는 유연성을 제공합니다. 이는 개발 및 준비 사이트를 크롤링하지 않도록 정보 검색 엔진 봇과 같은 작업을 수행 할 수 있지만 세 개의 개별 파일을 작성하고 유지 관리하지 않고도 생산 버전을 색인화 할 수 있기 때문에 유용합니다.
패키지 Winton.AspNetCore.Seo 프로젝트의 .csproj 파일에 추가하거나 Nuget 패키지 관리자를 사용하여 설치하십시오.
Install-Package Winton.AspNetCore.Seo Startup.cs 의 ConfigureServices 에 필요한 서비스를 추가하십시오. 예를 들어, 기본 robots.txt 설정을 사용하고 사이트 맵을 정의하지 않고 :
public void ConfigureServices ( IServiceCollection services )
{
services . AddSeoWithDefaultRobots ( ) ;
} HTML 파일에 적절한 열린 그래프 Taghelper를 추가하십시오. 예를 들어 _Layout.cshtml :
@using System;
@using Winton.AspNetCore.Seo.HeaderMetadata.OpenGraph
@addTagHelper *, Winton.AspNetCore.Seo
<!DOCTYPE html >
< html >
< head >
< open-graph-article
audio =" @{ new Audio( " http: //example.com") }"
authors=" @{ new List<string> { " http: //example.com/choc13" } }"
description=" Test description "
images ="
@{
new List<Image>
{
new Image( " http: //example.com/img1.jpg") { SecureUrl = " https://example.com/img1.jpg " , Height = 250 },
new Image( "http://example.com/img2.jpg") { SecureUrl = " https://example.com/img2.jpg " , Height = 300, Width = 500 }
};
} "
published-time=" @{ DateTime.UtcNow } "
title =" Test "
>
</ open-graph-article >
</ head >
< body >
</ body >
</ html > AddSeoWithDefaultRobots 또는 AddSeo 호출 할 때 사이트 맵을 다양한 방식으로 정의 할 수 있습니다.
대의원 사용. 예를 들어:
services . AddSeoWithDefaultRobots (
options => options . Urls = new List < SitemapUrlOptions >
{
new SitemapUrlOptions
{
Priority = 0.9M ,
RelativeUrl = " test "
}
} ) ; 코드를 사용하여 사이트 맵을 정의하고 기본 robots.txt 설정을 유지하려는 경우 유용합니다 (robots.txt 옵션 사용자 정의에 대한 자세한 내용은 아래 참조). 구성이 환경에 의존 할 때 IWebHostEnvironment 에 액세스 할 수있는 대의원 버전도 있습니다.
구성에서. 예를 들어:
services . AddSeo ( _configuration ) ; 이것은 appsettings.json 과 같은 사이트 맵을 구성에 넣으려면 유용합니다.
구성에는 "Seo" 키가있는 섹션이 포함되어야합니다.
{
"Seo" : {
"Sitemap" : {
"Urls" : [
{
"Priority" : 0.9 ,
"RelativeUrl" : " /login "
},
{
"Priority" : 0.8 ,
"RelativeUrl" : " /about "
}
]
}
}
}이 메소드는 기본 robots.txt 옵션을 설정하지 않으므로 응용 프로그램에서 요구하는 Robots.txt도 구성해야합니다.
robots.txt 파일은 사이트 맵과 동일한 방식으로 구성 할 수 있습니다. AddSeoWithDefaultRobots 라고하는 경우 다음 정책을 적용하는 기본 robots.txt 옵션이 사용됩니다.
참고 : 악의적 인 봇은 Robots.txt 파일을 무시할 수 있으므로 사이트의 민감한 부분을 숨기는 데 의존해서는 안됩니다.
대신 AddSeo 호출하면 옵션을 지정할 수 있습니다. 그들이 지정할 수있는 몇 가지 방법이 있습니다.
대의원 사용. 예를 들어:
public void ConfigureServices ( IServiceCollection services )
{
services . AddSeo (
options =>
{
options . RobotsTxt . AddSitemapUrl = false ;
options . RobotsTxt . UserAgentRecords = new List < UserAgentRecord >
{
new UserAgentRecord
{
Disallow = new List < string > { " /login " } ,
UserAgent = " bing "
}
} ;
} ) ;
} 코드를 사용하여 robots.txt를 정의하려는 경우 유용합니다. 동일한 대의원에서 사이트 맵을 구성 할 수도 있습니다. 구성이 환경에 의존 할 때 IWebHostEnvironment 에 액세스 할 수있는 대의원 버전도 있습니다.
구성에서. 예를 들어:
services . AddSeo ( _configuration ) ; 이것은 appsettings.json 과 같은 구성에서 robots.txt를 정의하려는 경우 유용합니다.
구성에는 "Seo" 키가있는 섹션이 포함되어야합니다.
{
"Seo" : {
"RobotsTxt" : {
"AddSitemapUrl" : false ,
"UserAgentRecords" : [
{
"UserAgent" : " bing " ,
"Disallow" : [ " /login " ]
},
{
"UserAgent" : " google " ,
"Disallow" : [ " * " ]
}
]
}
}
}사이트 맵이 필요한 경우 구성을 통해 사이트 맵을 구성해야합니다.
RobotsTxtOptions 에는 다음과 같은 속성이 있습니다.
AddSitemapUrl 사이트 맵의 URL이 robots.txt 파일에 포함되어야하는지 여부를 결정합니다.UserAgentRecords 사용자 에이전트 레코드 모음. 이를 사용하여 각 특정 로봇이 무시하려는 사이트의 일부를 정의하십시오. 와일드 카드 사용자 에이전트를 사용하여 레코드를 정의하여 * 사용하여 모든 로봇에 동일한 규칙을 적용 할 수 있습니다. @addTagHelper *, Winton.AspNetCore.Seo 가져 오기 명령문이 사용될 때 다음 태그 조력자는이 라이브러리에서 사용할 수 있습니다.
open-graph-articleopen-graph-bookopen-graph-profileopen-graph-websiteopen-graph-music-albumopen-graph-music-playlistopen-graph-music-radio-stationopen-graph-music-songopen-graph-video-episodeopen-graph-video-movieopen-graph-video-otheropen-graph-video-tv-show Audio 및 Image 와 같이이 라이브러리에서 정의 된 유형이있는 일부 속성을 할당하려면 @using Winton.AspNetCore.Seo.HeaderMetadata.OpenGraph CSHTML 파일의 상단에 추가해야합니다.
웹 사이트를 시작하면 브라우저에서 다음 URL에서 파일을 볼 수 있어야합니다.
Open Graph Tag Helpers를 추가 한 경우 사이트의 HTML 페이지 헤드에 여러 <meta> 태그가 있어야합니다.
위에 나열된 모든 열린 그래프 태그 조절기는 OpenGraphTagHelper 클래스를 확장합니다. 나만의 열린 그래프 객체를 추가하려면이 클래스를 확장 할 수도 있습니다. 기본 클래스는 태그 도우미의 속성을 올바른 오픈 그래프 메타 태그로 바꾸는 것을 관리합니다. 이 라이브러리에서 OpenGraphPropertyAttribute 및 OpenGraphNamespaceAttribute 사용하여 객체의 Behvaiour를 미세 조정할 수도 있습니다. 예제는 아래를 참조하십시오.
기본적으로 OpenGraphTagHelper 는 모든 태그에 대한 og 네임 스페이스를 지정합니다. 사용자 정의 열린 그래프 객체의 속성에 대해 이것을 무시하려면 OpenGraphNamespaceAttribute 를 클래스에 추가하십시오. 예를 들어 : [OpenGraphNamespaceAttribute("example", "http://example.com/ns#")] .
아래는 사용자 정의 오픈 그래프 태그 헬퍼의 예제입니다.
[ OpenGraphNamespaceAttribute ( " baz " , " http://baz.com/ns# " ) ]
public sealed class OpenGraphFooTagHelper : OpenGraphTagHelper
{
public OpenGraphFooTagHelper ( )
: base ( " foo " ) // Call the base constructor with the og:type of the custom object
{
}
// Property will render as <meta content="value assigned" property="baz:bar">
public string Bar { get ; set ; }
// Property will render as <meta content="value assigned" property="baz:foo_bar"> for each entry
// The OpenGraphPropetyAttribute can be used to specify the property name explicitly
[ OpenGraphProperty ( Name = " foo_bar " ) ]
public IEnumerable < string > FooBars { get ; }
}더 많은 예를 보려면이 라이브러리에서 제공 한 열린 그래프 오브젝트가 구현 된 방법에 대해서는 SRC를 참조하십시오.