ASP.NETコアWebサイトに検索エンジンメタデータを簡単に追加できるようになり、書きたいコードの作成に集中できます。それは3つのことを提供します:
<meta>タグこれらの個別のプロトコルのそれぞれの形式を調べたり、 <meta>タグのトンでHTMLを汚染する必要はありません。
また、これらのファイルが実行時にどのように生成されるかの動作を定義する柔軟性を提供します。これは、開発サイトやステージングサイトをクロールしないように、3つの個別のファイルを書き込み、維持することなく、生産バージョンにインデックスを作成できるように、検索エンジンボットに通知できるようなことを行うことができることを意味するため有用です。
パッケージWinton.AspNetCore.Seoプロジェクトの.csprojファイルに追加するか、nugetパッケージマネージャーを使用してインストールします。
Install-Package Winton.AspNetCore.SeoStartup.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" : [ " * " ]
}
]
}
}
}また、SiteMapが必要な場合は、Configでサイトマップを構成する必要があります。
RobotsTxtOptionsには次のプロパティがあります。
AddSitemapUrlサイトマップへのURLをrobots.txtファイルに含めるべきかどうかを判断しますUserAgentRecordsユーザーエージェントレコードのコレクション。これを使用して、特定の各ロボットを無視したいサイトの部分を定義します。 WildCardユーザーエージェントを使用してレコードを定義して、 *を使用してすべてのロボットに同じルールを適用できます。@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でファイルを表示できるはずです。
また、オープングラフタグヘルパーを追加した場合、サイトの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を参照してください。