本文介绍如何利用 next.js 13+ 的 `generatemetadata` 函数,结合国际化(i18n)路由参数,为不同语言版本(如英语和葡萄牙语)动态注入本地化 seo 元数据,包括标题、描述、关键词及 open graph 属性。
在 Next.js App Router 中,静态 metadata 对象无法响应运行时上下文(如当前语言),因此不能直接用于多语言 SEO 场景。正确的做法是使用 generateMetadata —— 一个支持异步逻辑、可访问路由参数(params)、搜索参数(searchParams)甚至服务端数据的专用函数。
假设你已配置了基于路径前缀的国际化路由(例如 /en-US/ 和 /pt-BR/),且页面结构为 app/[lang]/page.tsx,则可按如下方式实现语言感知的元数据:
// app/[lang]/page.tsx
import { Metadata } from 'next';
const englishMetadata: Metadata = {
title: {
default: 'brand',
template: '%s | brand.xyz',
},
description: 'Some description',
openGraph: {
title: 'brand',
description: 'Some description',
url: 'https://brand.xyz',
siteName: 'brand',
type: 'website',
},
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
'max-video-preview': -1,
'max-image-preview': 'large',
'max-snippet': -1,
},
},
icons: {
shortcut: '/favicon.png',
},
keywords: 'events clothing, fashion, online store',
};
const portugueseMetadata: Metadata = {
title: {
default: 'Brand',
template: '%s | brand.xyz',
},
description: 'Alguma descrição',
openGraph: {
title: 'Brand',
description: 'Alguma descrição',
url: 'https://brand.xyz',
siteName: 'brand',
type: 'website',
},
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
'max-video-preview': -1,
'max-image-preview': 'large',
'max-snippet': -1,
},
},
icons: {
shortcut: '/favicon.png',
},
keywords: 'eventos, vestuário, moda, loja online',
};
export async function generateMetadata({ params }: { params: { lang: string } }): Promise {
// 安全判断:避免未定义或非法语言值导致崩溃
if (params.lang === 'pt-BR' || params.lang === 'pt-PT') {
return portugueseMetadata;
}
return englishMetadata; // 默认回退至英文
}
export default func
tion Page() {
return ... ;
} ✅ 关键要点说明:
通过此方式,你的每条语言路由都将输出精准匹配目标用户的 SEO 元数据,显著提升多语言站点的搜索可见性与点击率。
# word
# html
# js
# go
# html5
# typescript
# cms
# seo
# app
# ai
# 路由
# 多语言
# 搜索引擎
# String
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
跨文件调用类方法怎么用_php作用域操作符与自动加载配合【介绍】
Linux如何申请SSL免费证书_Linux下Certbot安装与Nginx自动续期【指南】
本地php环境出现502错误_nginx或apache502badgateway解决技巧【解答】
如何使用Golang安装依赖库_管理模块和第三方包
C++中的协变与逆变是什么?C++函数指针与返回类型详解【类型系统】
Windows怎样拦截QQ浏览器广告_Windows拦截QQ浏览器广告方法【方法】
c++ namespace命名空间用法_c++避免命名冲突
如何在 Django 中修改用户密码后保持会话不丢失
Win10怎么关闭自动更新错误弹窗_Win10策略屏蔽失败提示减少干扰【防护】
Win10如何更改任务栏高度_Windows10解锁任务栏调整大小
Win10怎么关闭自动更新错误重启 Win10策略禁止失败补丁强制重启【防护】
Windows10系统怎么查看防火墙状态_Win10安全中心网络保护
Win11怎样安装微信开发者工具_Win11安装开发者工具教程【步骤】
手机php文件怎么变成mp4_安卓苹果打开php转mp4方法【教程】
如何使用Golang实现容器安全扫描_Golang Docker镜像漏洞检测方法
Win11怎么调整屏幕亮度_Windows 11调节显示器亮度护眼设置【步骤】
Win10如何设置双wan路由器 Win10双wan路由器设置方法【指南】
如何在Golang中实现RPC异步返回_Golang RPC异步处理与回调方法
Windows资源管理器总是卡顿或重启怎么办?(修复方法)
Win10怎样卸载TeamViewer_Win10卸载TeamViewer步骤【教程】
php本地部署后session无法保存_session存储路径与权限设置技巧【技巧】
Win11怎么设置开机自动连接宽带_Windows11创建拨号连接计划任务
如何在Windows上设置闹钟和计时器_系统自带的时钟应用全攻略【生活技巧】
Win11怎么关闭搜索历史_Win11清除设备上的搜索历史记录
Win10怎样清理C盘Steam游戏缓存_Win10清理Steam游戏缓存步骤【步骤】
如何使用Golang encoding/json解析JSON_Golang encoding/json解析与序列化示例
php修改数据怎么改富文本_update更新html内容注意事项【说明】
Win11此电脑不在桌面上_Windows 11桌面图标设置找回【步骤】
如何使用Golang实现微服务事件驱动_使用消息总线解耦服务
如何使用Golang管理跨项目依赖_Golang多模块项目依赖实践
如何测试您的网站全球打开速度-网站海外测速工
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
PythonGIL机制理解_多线程限制解析【教程】
c++怎么使用std::unique实现去重_c++ 容器元素排序与连续重复删除【教程】
Win11怎样安装企业微信_Win11安装企业微信教程【步骤】
Python对象生命周期管理_创建销毁说明【指导】
Win11怎么关闭系统透明度_Windows11个性化颜色透明效果
如何用正则与预处理高效拦截带干扰符的恶意域名
Windows笔记本无法进入睡眠模式怎么办?(电源疑难解答)
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
如何在JavaScript中动态拼接PHP的base_url与前端变量
Python数据抓取合法性_合规说明【指导】
Win11如何添加/删除输入法 Win11切换中英文输入法快捷键【设置】
Python多进程教程_multiprocessing模块实战
Win11怎么更改计算机名_Windows11系统信息重命名设备教程
如何使用正则表达式批量替换重复的星号-短横模式为固定字符串
Win11如何开启系统更新 Win11开启系统更新方法【步骤】
Win10如何卸载WindowsDefender_Win10卸载Defender教程【方法】
Mac的“预览”如何合并多个PDF_Mac文件处理技巧【效率】
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
2025-12-27
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。