Mudah untuk menambahkan metadata mesin pencari ke situs web ASP.NET Core Anda, memungkinkan Anda untuk fokus menulis kode yang ingin Anda tulis. Ini memberikan tiga hal:
<meta> Anda tidak lagi harus mencari format masing -masing protokol terpisah ini, atau mencemari HTML Anda dengan banyak tag <meta> .
Ini juga memberi Anda fleksibilitas untuk menentukan perilaku bagaimana file -file ini dihasilkan saat runtime. Ini berguna karena itu berarti Anda dapat melakukan hal -hal seperti menginformasikan bot mesin pencari untuk tidak merangkak pengembangan dan pementasan situs Anda, tetapi memungkinkan mereka untuk mengindeks versi produksi, tanpa harus menulis dan memelihara tiga file terpisah.
Tambahkan paket Winton.AspNetCore.Seo ke file .csproj proyek Anda atau instal menggunakan Nuget Package Manager:
Install-Package Winton.AspNetCore.Seo Tambahkan Layanan yang Diperlukan di ConfigureServices di Startup.cs . Misalnya menggunakan pengaturan robots.txt default dan tanpa mendefinisikan sitemap:
public void ConfigureServices ( IServiceCollection services )
{
services . AddSeoWithDefaultRobots ( ) ;
} Tambahkan taghelper grafik terbuka yang sesuai ke file html Anda. Misalnya di _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 > Sitemap Anda dapat didefinisikan dengan berbagai cara saat memanggil AddSeoWithDefaultRobots atau AddSeo :
Menggunakan delegasi. Misalnya:
services . AddSeoWithDefaultRobots (
options => options . Urls = new List < SitemapUrlOptions >
{
new SitemapUrlOptions
{
Priority = 0.9M ,
RelativeUrl = " test "
}
} ) ; Ini berguna ketika Anda ingin menentukan peta situs Anda menggunakan kode dan menyimpan pengaturan robots.txt default (lihat di bawah untuk detail lebih lanjut tentang penyesuaian robot.txt opsi). Ada juga versi delegasi yang memiliki akses ke IWebHostEnvironment ketika konfigurasi tergantung pada lingkungan.
Dari config. Misalnya:
services . AddSeo ( _configuration ) ; Ini berguna ketika Anda ingin memasukkan sitemap ke dalam konfigurasi, seperti appsettings.json .
Konfigurasi harus berisi bagian dengan kunci "Seo" , misalnya:
{
"Seo" : {
"Sitemap" : {
"Urls" : [
{
"Priority" : 0.9 ,
"RelativeUrl" : " /login "
},
{
"Priority" : 0.8 ,
"RelativeUrl" : " /about "
}
]
}
}
}Perhatikan bahwa metode ini tidak mengatur opsi robots.txt default apa pun, jadi Anda juga harus mengkonfigurasi robots.txt sebagaimana diperlukan oleh aplikasi Anda.
File robots.txt dapat dikonfigurasi dengan cara yang sama seperti sitemap. Jika AddSeoWithDefaultRobots disebut opsi robot default.txt akan digunakan yang menerapkan kebijakan berikut:
Catatan: Selalu layak diingat bahwa bot jahat dapat mengabaikan file robots.txt, jadi tidak boleh diandalkan untuk menyembunyikan bagian -bagian sensitif dari situs.
Memanggil AddSeo sebagai gantinya memungkinkan Anda untuk menentukan opsi. Ada beberapa cara mereka dapat ditentukan:
Menggunakan delegasi. Misalnya:
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 "
}
} ;
} ) ;
} Ini berguna saat Anda ingin mendefinisikan robots.txt menggunakan kode. Anda juga dapat mengkonfigurasi sitemap di delegasi yang sama. Ada juga versi delegasi yang memiliki akses ke IWebHostEnvironment ketika konfigurasi tergantung pada lingkungan.
Dari config. Misalnya:
services . AddSeo ( _configuration ) ; Ini berguna ketika Anda ingin mendefinisikan robots.txt di config, seperti appsettings.json .
Konfigurasi harus berisi bagian dengan kunci "Seo" , misalnya:
{
"Seo" : {
"RobotsTxt" : {
"AddSitemapUrl" : false ,
"UserAgentRecords" : [
{
"UserAgent" : " bing " ,
"Disallow" : [ " /login " ]
},
{
"UserAgent" : " google " ,
"Disallow" : [ " * " ]
}
]
}
}
}Anda juga harus mengkonfigurasi sitemap melalui konfigurasi jika Anda memerlukan sitemap.
RobotsTxtOptions memiliki properti berikut:
AddSitemapUrl - Menentukan apakah URL ke sitemap harus dimasukkan dalam file robots.txtUserAgentRecords - kumpulan catatan agen pengguna. Gunakan ini untuk menentukan bagian -bagian dari situs yang Anda ingin setiap robot tertentu abaikan. Anda dapat mendefinisikan catatan menggunakan agen pengguna Wildcard untuk menerapkan aturan yang sama untuk semua robot dengan menggunakan * . Pembantu tag pengikut tersedia dari perpustakaan ini ketika @addTagHelper *, Winton.AspNetCore.Seo pernyataan impor digunakan:
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 Untuk menetapkan beberapa properti yang memiliki jenis yang ditentukan oleh perpustakaan ini, seperti Audio dan Image , Anda juga harus menambahkan @using Winton.AspNetCore.Seo.HeaderMetadata.OpenGraph ke bagian atas file cshtml Anda.
Mulai situs web Anda dan Anda harus dapat melihat file di URL berikut di browser:
Seharusnya juga ada beberapa tag <meta> di kepala halaman HTML situs Anda jika Anda telah menambahkan pembantu tag grafik terbuka.
Semua pembantu tag grafik terbuka yang tercantum di atas memperluas kelas OpenGraphTagHelper . Untuk menambahkan objek grafik terbuka Anda sendiri, Anda juga dapat memperluas kelas ini. Kelas dasar akan menangani mengubah properti di tag helper Anda menjadi tag meta grafik terbuka yang benar. Anda juga dapat menyempurnakan Behvaiour objek Anda dengan menggunakan OpenGraphPropertyAttribute dan OpenGraphNamespaceAttribute di perpustakaan ini. Lihat di bawah untuk contoh.
Secara default, OpenGraphTagHelper menentukan namespace og untuk semua tag. Untuk mengganti ini untuk properti pada objek grafik terbuka khusus, cukup tambahkan OpenGraphNamespaceAttribute ke kelas Anda. Misalnya: [OpenGraphNamespaceAttribute("example", "http://example.com/ns#")] .
Di bawah ini adalah contoh singkat dari penolong tag grafik terbuka khusus:
[ 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 ; }
}Untuk lebih banyak contoh, lihat SRC untuk bagaimana objek grafik terbuka yang disediakan oleh perpustakaan ini telah diimplementasikan.