跳到主要內容

meta tag 說明

meta tag 說明

1. <title></title>
*建議中文保持在 30 個字元、英文 60 個字元以內
*可以用以下格式: 主要關鍵字  -  次要關鍵字 | 廠牌名稱
*每個頁面的 Title 都是唯一的
<title>MyDemo-@ViewData["Title"]</title>

2. <meta name='description' content='@ViewData["PageDescript"]' />
*建議中文保持在 80 個字元、英文 160 個字元以內

3. og 社群相關 tag
og 全名為: Open Graph Protocol
*在 og:title 設定的文字會當作分享 FB 時的標題。

3.1 og:image
*大小不要超過 8 m
*尺寸要大於 200px * 200px,否則連圖都抓不到
*如果圖片為長方形 建議最小尺寸 600px * 315px
*如果圖片為正方形 建議最小尺寸 600px * 600px


程式化新增 meta tag



//在DotNet Core Project中 新增目錄夾 Filters ,並新增MetaTagFilter.cs 檔案 

using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Mvc;

namespace WebProject.Filters
{

    public class MetaTagAttribute : TypeFilterAttribute { 
        public MetaTagAttribute( ) : base( typeof( MetaTagFilter ) ) {

        } 

        public class MetaTagFilter : IActionFilter { 
            
            private string title { get; set; } 
            private string description { get; set; } 
            private string image { get; set; } 
            private string robotRule { get; set; } 
            public MetaTagFilter( ) : this( 
              title: "MyDemo" , 
              description: "" , 
              image: "" ,
              robotRule: "index,follow" ) { }

              public MetaTagFilter(string title , string description , string image , string robotRule ) { 
              this.title = title ?? this.title; 
              this.description = description ?? this.description; 
              this.image = image ?? this.image; 
              this.robotRule = robotRule ?? this.robotRule;
            } 

            public void OnActionExecuted( ActionExecutedContext context ) { 

            } 

            public void OnActionExecuting( ActionExecutingContext context ) { 
              dynamic controller = context.Controller; 
              controller.ViewBag.Title = this.title; 
              controller.ViewBag.Description = this.description; 
              controller.ViewBag.image = this.image; 
              controller.ViewBag.RobotRule = this.robotRule; 
            } 
        } 
    } 
}

//在DotNet Core Project中 Controller 目錄夾下 *.cs  
[MetaTag( Arguments = new object[] {"${title}","${description}","${image url}","${robot rules}" } )] 
public IActionResult Index()
{
  return View();
}

//在DotNet Core Project中 Shared 目錄夾下 _Layout.cshtml 
<head>
    <title>MyDemo-@Html.Raw(ViewBag.Title)</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name='description' content='@Html.Raw(ViewBag.Description)' />
    <meta name='robot' content='@ViewBag.RobotRule' />
    <meta property='og:title' content='MyDemo-@Html.Raw(ViewBag.Title)' />
    <meta property='og:description' content='@Html.Raw(ViewBag.Description)' />
    <meta property='og:image' content='@ViewBag.image' />
    <meta property='og:type' content='website' />
    <meta property='og:url' content='@Context.Request.GetDisplayUrl()' />
    <meta property='og:site_name' content='MyDemo' />
    <meta http-equiv="Content-Language" content="zh-tw" />
    <meta http-equiv="Content-Type" content="text/html" charset="utf-8" />
</head>

留言

這個網誌中的熱門文章

Grafana Dashboard 建立

建立自己的 Dashboard # 由於 intelligent sense 相當不錯,輸入關鍵字他會帶出 metric label # 另外可參考 https://prometheus.io/docs/prometheus/latest/querying/basics/ Prometheus Query # 或是直接拿其他已建立的Dashboard 可複製到新的 Dashboard ex: node_memory_MemTotal_bytes # 取伺服器記憶體容量資料 # 過濾條件在{}加入 ex: node_memory_MemTotal_bytes{instance="${server 1}:9100"} # 要取特定伺服器資料 # Setting 中設定 Variables ex: node_memory_MemTotal_bytes{instance=~"$node"} # 變數名稱 node 建立 Alert .Visualization 必須是Graph

FluentD 實作 Nginx Access Log

實作 Nginx Access Log 透過 FluentD 收集 /var/log/nginx/nginx_web.access.log 日誌 過濾不必要的紀錄 輸出到MongoDB & Elasticsearch 延伸閱讀 FluentD 參數說明 FluentD 實作 Nginx Access Log 補充 fluent.conf # workers parameter for specifying the number of workers <system> workers 1 </system> <worker 0> <source> @type tail path /var/log/nginx/nginx_web.access.log pos_file /var/log/td-agent/nginx_web.access.log.pos tag nginx.web.access format /^(?<remote>[^ ]*) (?<host>[^ ]*) (?<user>[^ ]*) \[(?<logtime>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")(?: "(?<custom_field1>[^\"]*)" "(?< custom_field2>[^\"]*)" "(?< custom_field3>[^\"]*)")?$/ time_format %d/%b/%Y:%H:%M:%S %z </source> # 濾掉不必要的存取紀錄 <fil...

FluentD 實作 Error Log

FluentD 實作 Error Log 本篇將介紹使用 DotNet 專案 log4net 套件,紀錄的 log 針對 Error Level 的訊息透過FluentD 提取出來 在紀錄中 增加 trace ID 設入 MongoDB , 及加入 Slack 通知 延伸閱讀 FluentD 參數說明 FluentD 實作 Nginx Access Log FluentD 實作 Nginx Access Log 補充 log4net <?xml version="1.0" encoding="utf-8" ?> <configuration> <log4net> <appender name="All" type="log4net.Appender.RollingFileAppender"> <file value="/var/log/my.log" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <datePattern value="yyyy-MM-dd" /> <maximumFileSize value="5MB" /> <maxSizeRollBackups value="10" /> <staticLogFileName value="true" /> <PreserveLogFileNameExtension value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="[%date] [...