搜索引擎优化 (SEO)
道格龙(Docusaurus)通过多种方式支持搜索引擎优化。
全局元数据
通过站点配置为整个站点提供全局元属性。这些元数据将全部以键值对作为属性名和值呈现在 HTML 的 <head>
标签中。metadata
属性是声明 <meta>
标签的便捷方式,但也可以通过 headTags
属性在 <head>
中注入任意标签。
export default {
themeConfig: {
// 声明一些 <meta> 标签
metadata: [
{name: 'keywords', content: 'cooking, blog'},
{name: 'twitter:card', content: 'summary_large_image'},
],
},
headTags: [
// 声明一个 <link> preconnect 标签
{
tagName: 'link',
attributes: {
rel: 'preconnect',
href: 'https://example.com',
},
},
// 声明一些 json-ld 结构化数据
{
tagName: 'script',
attributes: {
type: 'application/ld+json',
},
innerHTML: JSON.stringify({
'@context': 'https://schema.org/',
'@type': 'Organization',
name: 'Meta Open Source',
url: 'https://opensource.fb.com/',
logo: 'https://opensource.fb.com/img/logos/Meta-Open-Source.svg',
}),
},
],
};
道格龙(Docusaurus)会开箱即用地添加一些元数据。例如,如果你配置了 i18n,你将得到一个 hreflang
备用链接。
要了解更多关于元标签类型的信息,请访问 MDN 文档。
单页面元数据
与全局元数据类似,道格龙(Docusaurus)也允许向单个页面添加元信息。请遵循本指南配置 <head>
标签。简而言之:
# A cooking guide
<head>
<meta name="keywords" content="cooking, blog" />
<meta name="twitter:card" content="summary_large_image" />
<link rel="preconnect" href="https://example.com" />
<script type="application/ld+json">
{JSON.stringify({
'@context': 'https://schema.org/',
'@type': 'Organization',
name: 'Meta Open Source',
url: 'https://opensource.fb.com/',
logo: 'https://opensource.fb.com/img/logos/Meta-Open-Source.svg',
})}
</script>
</head>
Some content...
道格龙(Docusaurus)会自动为每个 Markdown 页面添加 description
、title
、规范 URL 链接以及其他有用的元数据。这些都可以通过 front matter 进行配置:
---
title: 用于搜索引擎的标题;可以与实际标题不同
description: 此页面的简短描述
image: 将在社交媒体卡片中显示的缩略图
keywords: [描述, 主要, 主题的, 关键词]
---
在创建你的 React 页面时,在 Layout
中添加这些字段也会改善 SEO。
对于像 description
和 keywords
这样的字段,推荐使用 front matter:道格龙(Docusaurus)会自动将其应用于 description
和 og:description
,而如果使用 <head>
标签,你将需要手动声明两个元数据标签。
官方插件都支持以下 front matter:title
、description
、keywords
和 image
。有关其他 front matter 支持,请参阅它们各自的 API 文档:
对于 JSX 页面,你可以使用道格龙(Docusaurus)的 <Head>
组件。
import React from 'react';
import Layout from '@theme/Layout';
import Head from '@docusaurus/Head';
export default function page() {
return (
<Layout title="页面" description="一个 React 页面示例">
<Head>
<meta property="og:image" content="image.png" />
<meta name="twitter:card" content="summary_large_image" />
<link rel="preconnect" href="https://example.com" />
<script type="application/ld+json">
{JSON.stringify({
'@context': 'https://schema.org/',
'@type': 'Organization',
name: 'Meta Open Source',
url: 'https://opensource.fb.com/',
logo: 'https://opensource.fb.com/img/logos/Meta-Open-Source.svg',
})}
</script>
</Head>
{/* ... */}
</Layout>
);
}
为了方便起见,默认主题的 <Layout>
组件接受 title
和 description
作为 props。
静态 HTML 生成
道格龙(Docusaurus)是一个静态站点生成器——HTML 文件是为每个 URL 路由静态生成的,这有助于搜索引擎更容易地发现你的内容。