Hace que sea fácil agregar metadatos del motor de búsqueda a su sitio web de ASP.NET Core, lo que le permite concentrarse en escribir el código que desea escribir. Proporciona tres cosas:
<meta> etiquetas Ya no tiene que buscar el formato de cada uno de estos protocolos separados, ni contaminar su HTML con toneladas de etiquetas <meta> .
También le brinda la flexibilidad para definir el comportamiento de cómo se generan estos archivos en tiempo de ejecución. Esto es útil porque significa que puede hacer cosas como informar los bots del motor de búsqueda para no rastrear sus sitios de desarrollo y estadificación, sino que les permita indexar la versión de producción, sin tener que escribir y mantener tres archivos separados.
Agregue el paquete Winton.AspNetCore.Seo al archivo .csproj de su proyecto o instale usando el administrador de paquetes Nuget:
Install-Package Winton.AspNetCore.Seo Agregue los servicios requeridos en ConfigureServices en Startup.cs . Por ejemplo, para usar la configuración predeterminada de robots.txt y sin definir un mapa del sitio:
public void ConfigureServices ( IServiceCollection services )
{
services . AddSeoWithDefaultRobots ( ) ;
} Agregue el gráfico abierto apropiado Taghelper a sus archivos HTML. Por ejemplo en _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 > Su mapa del sitio se puede definir de varias maneras al llamar a AddSeoWithDefaultRobots o AddSeo :
Usando un delegado. Por ejemplo:
services . AddSeoWithDefaultRobots (
options => options . Urls = new List < SitemapUrlOptions >
{
new SitemapUrlOptions
{
Priority = 0.9M ,
RelativeUrl = " test "
}
} ) ; Esto es útil cuando desea definir el mapa de su sitio usando el código y mantener la configuración predeterminada de robots.txt (consulte a continuación para obtener más detalles sobre la personalización de las opciones de robots.txt). También hay una versión del delegado que tiene acceso al IWebHostEnvironment para cuando la configuración depende del entorno.
De la configuración. Por ejemplo:
services . AddSeo ( _configuration ) ; Esto es útil cuando desea poner su mapa del sitio en la configuración, como appsettings.json .
La configuración debe contener una sección con la clave "Seo" , por ejemplo:
{
"Seo" : {
"Sitemap" : {
"Urls" : [
{
"Priority" : 0.9 ,
"RelativeUrl" : " /login "
},
{
"Priority" : 0.8 ,
"RelativeUrl" : " /about "
}
]
}
}
}Tenga en cuenta que este método no establece ninguna opción Robots.txt predeterminada, por lo que también debe configurar el robots.txt según lo requiera su aplicación.
El archivo robots.txt se puede configurar de la misma manera que el mapa del sitio. Si se llama AddSeoWithDefaultRobots , se utilizarán las opciones de robots predeterminadas.txt que aplican la siguiente política:
Nota: Siempre vale la pena recordar que los bots maliciosos pueden ignorar un archivo robots.txt, por lo que no debe confiarse para ocultar cualquier parte sensible del sitio.
En su lugar, llamar AddSeo le permite especificar las opciones. Hay varias formas en que se pueden especificar:
Usando un delegado. Por ejemplo:
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 "
}
} ;
} ) ;
} Esto es útil cuando desea definir su robots.txt usando código. También puede configurar el mapa del sitio en el mismo delegado. También hay una versión del delegado que tiene acceso al IWebHostEnvironment para cuando la configuración depende del entorno.
De la configuración. Por ejemplo:
services . AddSeo ( _configuration ) ; Esto es útil cuando desea definir el robots.txt en la configuración, como appsettings.json .
La configuración debe contener una sección con la clave "Seo" , por ejemplo:
{
"Seo" : {
"RobotsTxt" : {
"AddSitemapUrl" : false ,
"UserAgentRecords" : [
{
"UserAgent" : " bing " ,
"Disallow" : [ " /login " ]
},
{
"UserAgent" : " google " ,
"Disallow" : [ " * " ]
}
]
}
}
}También debe configurar el mapa del sitio a través de la configuración si necesita un mapa del sitio.
RobotsTxtOptions tiene las siguientes propiedades:
AddSitemapUrl : determina si la URL al mapa del sitio debe incluirse en el archivo robots.txtUserAgentRecords : una colección de registros de agentes de usuario. Use esto para definir las partes del sitio que desea que cada robot en particular ignore. Puede definir un registro utilizando el agente de usuarios de Wildcard para aplicar las mismas reglas a todos los robots usando * . Los siguientes ayudantes de etiqueta están disponibles en esta biblioteca cuando se utiliza la declaración @addTagHelper *, Winton.AspNetCore.Seo de importación:
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 asignar algunas de las propiedades que tienen tipos definidos por esta biblioteca, como Audio e Image , también deberá agregar @using Winton.AspNetCore.Seo.HeaderMetadata.OpenGraph a la parte superior de su archivo CSHTML.
Inicie su sitio web y debería poder ver los archivos en las siguientes URL en un navegador:
También debe haber varias etiquetas <meta> en la cabeza de las páginas HTML de su sitio si ha agregado algún ayudante de etiquetas de gráficos abiertos.
Todos los ayudantes de etiqueta de gráfico abierto enumerados anteriormente extienden la clase OpenGraphTagHelper . Para agregar sus propios objetos de gráfico abierto, también puede extender esta clase. La clase base se encargará de convertir las propiedades en su ayudante de etiqueta en las metaetiquetas de gráficos abiertos correctos. También puede ajustar el behvaiour de su objeto utilizando OpenGraphPropertyAttribute y OpenGraphNamespaceAttribute en esta biblioteca. Vea a continuación los ejemplos.
Por defecto, OpenGraphTagHelper especifica el espacio de nombres og para todas las etiquetas. Para anular esto para las propiedades en cualquier objeto de gráfico abierto personalizado, simplemente agregue OpenGraphNamespaceAttribute a su clase. Por ejemplo: [OpenGraphNamespaceAttribute("example", "http://example.com/ns#")] .
A continuación se muestra un breve ejemplo de un ayudante de etiqueta de gráfico abierto 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 obtener más ejemplos, consulte el SRC sobre cómo se han implementado los objetos de gráfico abierto proporcionados por esta biblioteca.