Это позволяет легко добавить метаданные поисковых систем на ваш основной веб -сайт ASP.NET, что позволяет вам сосредоточиться на написании кода, который вы хотите написать. Он предоставляет три вещи:
<meta> теги Вам больше не нужно искать формат каждого из этих отдельных протоколов или загрязнять HTML тоннами тегов <meta> .
Это также дает вам гибкость для определения поведения того, как эти файлы генерируются во время выполнения. Это полезно, потому что это означает, что вы можете делать такие вещи, как информировать ботов в поисковых системах, чтобы не ползти на ваших сайтах разработки и постановки, но позволяете им индексировать производственную версию, не писать и поддерживать три отдельных файла.
Добавьте пакет Winton.AspNetCore.Seo в файл .csproj
Install-Package Winton.AspNetCore.Seo Добавьте необходимые службы в ConfigureServices в Startup.cs . Например, для использования настройки robots.txt по умолчанию и без определения карты сайта:
public void ConfigureServices ( IServiceCollection services )
{
services . AddSeoWithDefaultRobots ( ) ;
} Добавьте соответствующий Taghelper Open Graph в ваши HTML -файлы. Например, в _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 ) ; Это полезно, если вы хотите определить robots.txt в config, например, appsettings.json .
Например, конфигурация должна содержать раздел с ключом "Seo" :
{
"Seo" : {
"RobotsTxt" : {
"AddSitemapUrl" : false ,
"UserAgentRecords" : [
{
"UserAgent" : " bing " ,
"Disallow" : [ " /login " ]
},
{
"UserAgent" : " google " ,
"Disallow" : [ " * " ]
}
]
}
}
}Вы также должны настроить карту сайта через конфигурацию, если вам нужна карта сайта.
RobotsTxtOptions обладает следующими свойствами:
AddSitemapUrl - определяет, должен ли URL -адрес сайта быть включенным в файл robots.txtUserAgentRecords - коллекция записей пользователя. Используйте это, чтобы определить части сайта, которые вы хотите, чтобы каждый конкретный робот игнорировал. Вы можете определить запись с использованием пользовательского агента подстановочного знака, чтобы применить одни и те же правила ко всем роботам, используя * . Помогающие последователи, полученные в этой библиотеке, доступны в этой библиотеке, когда используется импорт @addTagHelper *, Winton.AspNetCore.Seo import
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 -адресах в браузере:
Также должно быть несколько тегов <meta> в голове HTML -страниц вашего сайта, если вы добавили какие -либо помощники с открытым графом.
Все перечисленные выше помощники тега с открытым графом расширяют класс OpenGraphTagHelper . Чтобы добавить свои собственные объекты открытого графика, вы также можете расширить этот класс. Базовый класс позаботится о том, чтобы превратить свойства в вашем вспомогательном помощнике в правильные метатеги с открытым графом. Вы также можете точно настроить Behvaiour вашего объекта, используя в этой библиотеке OpenGraphPropertyAttribute и OpenGraphNamespaceAttribute . Смотрите ниже для примеров.
По умолчанию 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 для того, как были реализованы объекты Open Graph, предоставленные этой библиотекой.