搜索引擎优化(SEO)
Docusaurus 支持多种方式的搜索引擎优化。
全局元数据
通过站点配置为整个站点提供全局元属性。元数据将使用键值对作为属性名称和值全部渲染在HTML的
中。metadata属性是声明标签的便捷快捷方式,但也可以通过headTags属性在
中注入任意标签。
export default {
themeConfig: {
// Declare some <meta> tags
metadata: [
{name: 'keywords', content: 'cooking, blog'},
{name: 'twitter:card', content: 'summary_large_image'},
],
},
headTags: [
// Declare a <link> preconnect tag
{
tagName: 'link',
attributes: {
rel: 'preconnect',
href: 'https://example.com',
},
},
// Declare some json-ld structured data
{
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 还允许为单个页面添加元信息。请按照此指南配置
标签。简而言之:
# 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: Title for search engines; can be different from the actual heading
description: A short description of this page
image: a thumbnail image to be shown in social media cards
keywords: [keywords, describing, the main topics]
---
在创建您的React页面时,在Layout中添加这些字段也将有助于SEO。
建议使用front matter来处理像description和keywords这样的字段:Docusaurus会自动将其应用于description和og:description,而使用
标签时,您需要手动声明两个元数据标签。
import React from 'react';
import Layout from '@theme/Layout';
import Head from '@docusaurus/Head';
export default function page() {
return (
<Layout title="Page" description="A React page demo">
<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>
);
}
为了方便起见,默认主题 组件接受 title 和 description 作为属性。
静态HTML生成
Docusaurus 是一个静态网站生成器——每个URL路由都会静态生成HTML文件,这有助于搜索引擎更容易地发现您的内容。
图像元描述
图像的alt标签告诉搜索引擎图像的内容,并在图像无法被视觉看到时使用,例如在使用屏幕阅读器时,或者图像损坏时。Alt标签在Markdown中通常得到支持。
您还可以为您的图片添加一个标题——这对SEO影响不大,但当鼠标悬停在图片上时会显示为工具提示,通常用于提供提示。


丰富的搜索信息
Docusaurus 博客支持丰富的搜索结果,以获得最佳的搜索引擎体验。这些信息是根据您在博客/全局配置中的元信息创建的。为了获得丰富搜索信息的好处,请填写有关文章的发布日期、作者和图片等信息。了解更多关于元信息的内容请点击这里。
Robots 文件
一个robots.txt文件规定了搜索引擎的行为,决定哪些内容应该显示,哪些不应该显示。你可以将其作为静态资源提供。以下内容将允许所有请求访问所有子页面:
User-agent: *
Disallow:
了解更多关于robots文件的信息,请访问Google文档。
重要:robots.txt 文件不会阻止 HTML 页面被索引。
为了防止整个 Docusaurus 网站被索引,请使用 noIndex 站点配置。一些 托管提供商 可能还允许你配置 X-Robots-Tag: noindex HTTP 头(GitHub Pages 不支持此功能)。
为了防止单个页面被索引,请使用 作为 页面元数据。了解更多关于 robots 元标签 的信息。
站点地图文件
Docusaurus 提供了 @docusaurus/plugin-sitemap 插件,该插件默认随 preset-classic 一起提供。它会自动生成一个 sitemap.xml 文件,在生产构建后可以通过 https://example.com/[baseUrl]/sitemap.xml 访问。此站点地图元数据有助于搜索引擎爬虫更准确地抓取您的网站。
站点地图插件会自动过滤包含noindex robots元指令的页面。
例如,/examples/noIndex 没有被包含在 Docusaurus sitemap.xml 文件 中,因为它包含以下 页面元数据:
<head>
<meta name="robots" content="noindex, nofollow" />
head>
人类可读的链接
Docusaurus 使用您的文件名作为链接,但您始终可以使用 slugs 来更改它,有关更多详细信息,请参阅此教程。
结构化内容
搜索引擎依赖于HTML标记,如、等,来理解网页的结构。当Docusaurus渲染您的页面时,语义标记,例如、、,用于划分页面的不同部分,帮助搜索引擎定位侧边栏、导航栏和主页内容等部分。
大多数CommonMark语法都有其对应的HTML标签。通过在项目中一致地使用Markdown,您将使搜索引擎更容易理解您的页面内容。