มันทำให้ง่ายต่อการเพิ่มข้อมูลเมตาของเครื่องมือค้นหาในเว็บไซต์ ASP.NET Core ของคุณทำให้คุณสามารถมุ่งเน้นไปที่การเขียนรหัสที่คุณต้องการเขียน มันมีสามสิ่ง:
<meta> คุณไม่จำเป็นต้องค้นหารูปแบบของแต่ละโปรโตคอลที่แยกต่างหากเหล่านี้อีกต่อไปหรือสร้างมลพิษ HTML ของคุณด้วยแท็ก <meta> จำนวนมาก
นอกจากนี้ยังช่วยให้คุณมีความยืดหยุ่นในการกำหนดพฤติกรรมของวิธีการสร้างไฟล์เหล่านี้ที่รันไทม์ สิ่งนี้มีประโยชน์เพราะมันหมายความว่าคุณสามารถทำสิ่งต่าง ๆ เช่นแจ้งเครื่องมือค้นหาบอทเพื่อไม่รวบรวมการพัฒนาและการจัดเตรียมเว็บไซต์ของคุณ แต่อนุญาตให้จัดทำดัชนีเวอร์ชันการผลิตโดยไม่ต้องเขียนและบำรุงรักษาสามไฟล์แยกกัน
เพิ่มแพ็คเกจ Winton.AspNetCore.Seo ไปยังไฟล์ .csproj ของโครงการของคุณหรือติดตั้งโดยใช้ Nuget Package Manager:
Install-Package Winton.AspNetCore.Seo เพิ่มบริการที่จำเป็นใน ConfigureServices ใน Startup.cs ตัวอย่างเช่นในการใช้การตั้งค่า robots.txt เริ่มต้นและไม่ต้องกำหนดแผนไซต์:
public void ConfigureServices ( IServiceCollection services )
{
services . AddSeoWithDefaultRobots ( ) ;
} เพิ่มกราฟเปิดที่เหมาะสมของ Taghelper ลงในไฟล์ 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 ) ; สิ่งนี้มีประโยชน์เมื่อคุณต้องการนำ Sitemap ของคุณลงในการกำหนดค่าเช่น 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 โดยใช้รหัส นอกจากนี้คุณยังสามารถกำหนดค่า sitemap ในตัวแทนเดียวกัน นอกจากนี้ยังมีรุ่นของตัวแทนที่สามารถเข้าถึง IWebHostEnvironment ได้เมื่อการกำหนดค่าขึ้นอยู่กับสภาพแวดล้อม
จากการกำหนดค่า ตัวอย่างเช่น:
services . AddSeo ( _configuration ) ; สิ่งนี้มีประโยชน์เมื่อคุณต้องการกำหนด robots.txt ใน config เช่น appsettings.json
การกำหนดค่าจะต้องมีส่วนที่มีคีย์ "Seo" ตัวอย่างเช่น:
{
"Seo" : {
"RobotsTxt" : {
"AddSitemapUrl" : false ,
"UserAgentRecords" : [
{
"UserAgent" : " bing " ,
"Disallow" : [ " /login " ]
},
{
"UserAgent" : " google " ,
"Disallow" : [ " * " ]
}
]
}
}
}คุณควรกำหนดค่า sitemap ผ่านการกำหนดค่าหากคุณต้องการแผนผังไซต์
RobotsTxtOptions มีคุณสมบัติดังต่อไปนี้:
AddSitemapUrl - กำหนดว่า URL ไปยัง Sitemap ควรรวมอยู่ในไฟล์ robots.txtUserAgentRecords - คอลเลกชันของบันทึกตัวแทนผู้ใช้ ใช้สิ่งนี้เพื่อกำหนดส่วนของเว็บไซต์ที่คุณต้องการให้หุ่นยนต์แต่ละตัวเพิกเฉย คุณสามารถกำหนดบันทึกโดยใช้ตัวแทนผู้ใช้ 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 ต่อไปนี้ในเบราว์เซอร์:
ควรมีแท็ก <meta> หลายแท็กในหัวของหน้า HTML ของไซต์ของคุณหากคุณได้เพิ่มผู้ช่วยแท็กกราฟที่เปิดอยู่
ผู้ช่วยแท็กกราฟเปิดทั้งหมดที่ระบุไว้ข้างต้นขยายคลาส OpenGraphTagHelper ในการเพิ่มวัตถุกราฟที่เปิดอยู่ของคุณเองคุณสามารถขยายคลาสนี้ได้ คลาสพื้นฐานจะดูแลการเปลี่ยนคุณสมบัติในแท็กตัวช่วยของคุณเป็นแท็กเมตากราฟเปิดที่ถูกต้อง นอกจากนี้คุณยังสามารถปรับแต่ง behvaiour ของวัตถุของคุณได้โดยใช้ OpenGraphPropertyAttribute และ OpenGraphNamespaceAttribute ในห้องสมุดนี้ ดูตัวอย่างด้านล่าง
โดยค่าเริ่มต้น OpenGraphTagHelper ระบุ og namespace สำหรับแท็กทั้งหมด หากต้องการแทนที่สิ่งนี้สำหรับคุณสมบัติของวัตถุกราฟที่เปิดที่กำหนดเองใด ๆ เพียงเพิ่ม 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 สำหรับวิธีการใช้วัตถุกราฟเปิดที่จัดทำโดยไลบรารีนี้