next.js - Next/head 中的 NextJs 元标记对 Facebook 和 metatags.io 不可用
问题描述
我创建了一个组件 SeoHeader 来处理 NextJs 项目上的元标记创建
import React from 'react';
import Head from 'next/head';
import { useRouter } from 'next/dist/client/router';
const SeoHeader = ({ title, description, image }) => {
const router = useRouter();
return (
<Head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta charSet="utf-8" />
<meta name="description" content={description} key="description" />
<meta property="og:type" content="website" />
<meta property="og:title" content={title} key="og:title" />
<meta property="og:description" content={description} key="og:description" />
<meta property="og:image" content={image} key="og:image" />
<meta property="og:url" content={`https://www.energici.fr${router?.asPath}`} key="og:url" />
<meta name="twitter:card" content={description} key="twitter:card" />
<meta property="og:site_name" content="Energici, l'info bien être" key="og:site_name" />
<meta
property="twitter:url"
content={`https://www.energici.fr${router?.asPath}`}
key="twitter:url"
/>
<meta
name="twitter:image:alt"
content="Energici la plateforme du bien être"
key="twitter:image:alt"
/>
<meta property="twitter:domain" content="energici.fr" />
<title>{title}</title>
</Head>
);
};
export default SeoHeader;
如果我在 _app.js 上导入这个组件,一切都会顺利。我可以在 html dom 中看到元标记,如果我共享链接预览卡就可以了。但是,如果我分享另一个页面,例如这个:https ://www.energici.fr/decouvrons-la-kinesiologie 我可以在 html dom 中看到正确的元标记,但是如果我在 facebook 中分享链接或者如果我测试它在这里https://metatags.io/我什么都看不到,就像没有元标记一样。
任何想法 ?
解决方案
Facebook 的爬虫和 metatags.io 的爬虫都不能执行 JavaScript。客户端 JavaScript 插入的任何 HTML 标记都将不可用。
Googlebot可以执行 JavaScript,因此您的元数据可能适用于 Google。需要注意的是,Googlebot 必须呈现您的页面,因此抓取和编制索引可能需要数周的时间。
您可以通过预呈现您的站点来解决这些问题。实施后,爬虫将看到带有您的标签的 HTML,而不必运行 JavaScript。
推荐阅读
- node.js - 在嵌套函数中捕获承诺拒绝
- anylogic - 运行时和模型时间在 Anylogic 中不同步
- aws-lambda - 即使数据及时响应,ReadTimeoutException
- r - 如何使用 write_sav 编写唯一的变量名
- libreoffice - 如何在主文档 libreoffice writer 中的文件文档之间添加分页符?
- java - 如何在 Java 中将元素插入到循环单链表中?
- c# - ASP.NET Core - 添加控制器 - 带有操作的 API 控制器,使用实体框架 - 引发错误并降级 NuGet EntityFrameworkCore.SqlServer
- javascript - 列表中的每个孩子都应该有一个唯一的“关键”道具——但我有一个?
- dbus - dbus-monitor 中的'sender=:1.478' 是什么意思?
- postgresql - 根据 cube.js 中的分层用户 ID 动态过滤数据