Isso facilita a adição de metadados do mecanismo de pesquisa ao site do ASP.NET Core, permitindo que você se concentre em escrever o código que deseja escrever. Ele fornece três coisas:
<meta> Você não precisa mais procurar o formato de cada um desses protocolos separados ou poluir seu html com toneladas de tags <meta> .
Ele também oferece a flexibilidade de definir o comportamento de como esses arquivos são gerados em tempo de execução. Isso é útil porque significa que você pode fazer coisas como informar os robôs do mecanismo de pesquisa para não rastrear seus sites de desenvolvimento e estadiamento, mas permitir que eles indexem a versão de produção, sem precisar escrever e manter três arquivos separados.
Adicione o pacote Winton.AspNetCore.Seo ao arquivo .csproj do seu projeto ou instalação usando o Nuget Package Manager:
Install-Package Winton.AspNetCore.Seo Adicione os serviços necessários no ConfigureServices no Startup.cs . Por exemplo, para usar as configurações padrão robots.txt e sem definir um sitemap:
public void ConfigureServices ( IServiceCollection services )
{
services . AddSeoWithDefaultRobots ( ) ;
} Adicione o gráfico aberto apropriado Taghelper aos seus arquivos HTML. Por exemplo, em _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 > Seu sitemap pode ser definido de várias maneiras ao chamar AddSeoWithDefaultRobots ou AddSeo :
Usando um delegado. Por exemplo:
services . AddSeoWithDefaultRobots (
options => options . Urls = new List < SitemapUrlOptions >
{
new SitemapUrlOptions
{
Priority = 0.9M ,
RelativeUrl = " test "
}
} ) ; Isso é útil quando você deseja definir o mapa do seu site usando o código e manter as configurações padrão robots.txt (veja abaixo mais detalhes sobre a personalização de opções robots.txt). Há também uma versão do delegado que tem acesso ao IWebHostEnvironment para quando a configuração depende do ambiente.
De config. Por exemplo:
services . AddSeo ( _configuration ) ; Isso é útil quando você deseja colocar seu sitemap em configuração, como appsettings.json .
A configuração deve conter uma seção com a chave "Seo" , por exemplo:
{
"Seo" : {
"Sitemap" : {
"Urls" : [
{
"Priority" : 0.9 ,
"RelativeUrl" : " /login "
},
{
"Priority" : 0.8 ,
"RelativeUrl" : " /about "
}
]
}
}
}Observe que este método não define nenhuma opção padrão robots.txt, portanto, você também precisa configurar o robots.txt, conforme exigido pelo seu aplicativo.
O arquivo robots.txt pode ser configurado da mesma maneira que o sitemap. Se AddSeoWithDefaultRobots for chamado de opções padrão robots.txt serão usadas, o que aplica a seguinte política:
Nota: sempre vale lembrar que os robôs maliciosos podem simplesmente ignorar um arquivo robots.txt, para que não seja confiado para ocultar nenhuma parte sensível do site.
Chamar AddSeo permite especificar as opções. Existem várias maneiras pelas quais eles podem ser especificados:
Usando um delegado. Por exemplo:
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 "
}
} ;
} ) ;
} Isso é útil quando você deseja definir o seu robots.txt usando o código. Você também pode configurar o sitemap no mesmo delegado. Há também uma versão do delegado que tem acesso ao IWebHostEnvironment para quando a configuração depende do ambiente.
De config. Por exemplo:
services . AddSeo ( _configuration ) ; Isso é útil quando você deseja definir o robots.txt na configuração, como appsettings.json .
A configuração deve conter uma seção com a chave "Seo" , por exemplo:
{
"Seo" : {
"RobotsTxt" : {
"AddSitemapUrl" : false ,
"UserAgentRecords" : [
{
"UserAgent" : " bing " ,
"Disallow" : [ " /login " ]
},
{
"UserAgent" : " google " ,
"Disallow" : [ " * " ]
}
]
}
}
}Você também deve configurar o sitemap via configuração se precisar de um sitemap.
O RobotsTxtOptions possui as seguintes propriedades:
AddSitemapUrl - determina se o URL para o sitemap deve ser incluído no arquivo robots.txtUserAgentRecords - Uma coleção de registros do agente do usuário. Use isso para definir as partes do site que você deseja que cada robô específico ignore. Você pode definir um registro usando o WildCard User Agent para aplicar as mesmas regras a todos os robôs usando * . Os seguintes ajudantes de tags estão disponíveis nesta biblioteca quando a instrução @addTagHelper *, Winton.AspNetCore.Seo é usada:
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 Para atribuir algumas das propriedades que possuem tipos definidos por esta biblioteca, como Audio e Image , você também precisará adicionar @using Winton.AspNetCore.Seo.HeaderMetadata.OpenGraph ao topo do seu arquivo cshtml.
Inicie seu site e você poderá ver os arquivos nos seguintes URLs em um navegador:
Também deve haver várias tags <meta> na cabeça das páginas HTML do seu site, se você adicionou algum ajudante de tag de gráfico aberto.
Todos os ajudantes de tags de gráfico aberto listados acima estendem a classe OpenGraphTagHelper . Para adicionar seus próprios objetos gráficos abertos, você também pode estender esta classe. A classe base cuidará de transformar as propriedades em seu ajudante de tags para as metatags de gráfico aberto correto. Você também pode ajustar o Behvaiour do seu objeto usando o OpenGraphPropertyAttribute e OpenGraphNamespaceAttribute nesta biblioteca. Veja abaixo para exemplos.
Por padrão, o OpenGraphTagHelper especifica o espaço para nome og para todas as tags. Para substituir isso para propriedades em quaisquer objetos de gráfico aberto personalizado, basta adicionar o OpenGraphNamespaceAttribute à sua classe. Por exemplo: [OpenGraphNamespaceAttribute("example", "http://example.com/ns#")] .
Abaixo está um breve exemplo de um ajudante de tag de gráfico aberto personalizado:
[ 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 ; }
}Para mais exemplos, consulte o SRC para como os objetos de gráfico aberto fornecidos por esta biblioteca foram implementados.