雖 Google 宣稱不再採納 keywords 做排名,但百度、內部搜尋、語義分析工具仍可能參考。動態注入成本極低,建議保留。
private void SetMetaKeywords(string keywords) {
HtmlMeta meta = new HtmlMeta();
meta.Name = "keywords";
meta.Content = keywords; // 逗號分隔: "ASP.NET, C#, WebForms, 動態載入"
Page.Header.Controls.Add(meta);
}
| 頁面類型 | 關鍵字來源 | 生成邏輯 |
|---|---|---|
| 文章/部落格 | 標籤/分類/實體識別 | 資料庫 Tag 欄位 + 標題關鍵字提取 (jieba/結巴分詞) |
| 商品頁 | 品牌/分類/屬性/同義詞 | SKU 屬性值組合 + 同義詞表映射 |
| 列表/分類頁 | 分類名/篩選條件 | 當前分類路徑 + 熱門篩選標籤 |
| 搜尋結果頁 | 使用者查詢詞 | 原始查詢 + 相關推薦詞 |
protected void RenderSeoMeta(string description, string keywords) {
// 移除舊有同名 meta (防重複)
RemoveExistingMeta("description");
RemoveExistingMeta("keywords");
if (!string.IsNullOrEmpty(description)) AddMeta("description", description);
if (!string.IsNullOrEmpty(keywords)) AddMeta("keywords", keywords);
// 可選:Open Graph / Twitter Card
if (!string.IsNullOrEmpty(description)) AddMeta("og:description", description, isProperty: true);
if (!string.IsNullOrEmpty(keywords)) AddMeta("og:keywords", keywords, isProperty: true);
}
private void RemoveExistingMeta(string name) {
for (int i = Header.Controls.Count - 1; i >= 0; i--) {
if (Header.Controls[i] is HtmlMeta meta &&
(meta.Name?.Equals(name, StringComparison.OrdinalIgnoreCase) == true ||
meta.Property?.Equals(name, StringComparison.OrdinalIgnoreCase) == true)) {
Header.Controls.RemoveAt(i);
}
}
}
private void AddMeta(string name, string content, bool isProperty = false) {
var meta = new HtmlMeta();
if (isProperty) meta.Property = name; else meta.Name = name;
meta.Content = content;
Header.Controls.Add(meta);
}
name="keywords"動態注入 Meta Keywords 與 Description 同屬 HtmlMeta 操作,建議統一封裝、去重、支援 Open Graph。雖關鍵字權重下降,但完整的 SEO 基礎建設體現專業度,且為內部搜尋、語義分析提供結構化資料來源。