首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为部署在Vercel上的NextJS项目获取不正确的OG标记

为部署在Vercel上的NextJS项目获取不正确的OG标记
EN

Stack Overflow用户
提问于 2020-10-26 06:10:24
回答 1查看 1.1K关注 0票数 0

我使用NextJS构建了我的项目,并将其部署在Vercel上。我的项目的Vercel是https://my-project.vercel.app。我的域(添加到Vercel仪表板中的项目设置)是www.example.com

当我使用Facebook共享调试器检查特定url上的元标记时,当使用my-project.vercel.app域而不是实际域www.example.com时,元标记将被正确地拾取。项目在浏览器中正确加载,包括两个域的元标记。

例如,对于我网站上的url /foo,og标记对于https://my-project.vercel.app/foo是正确的,而对于https://www.example.com/foo则是不正确的。

看看这些截图。注意,屏幕截图(esourcing.in)中显示的域被添加到Vercel仪表板中的项目esourcing-frontend.vercel.app中。

下面是我浏览器的截图:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-27 14:04:51

回答我自己的问题。我的代码里有个错误

臭虫

我正在使用包装组件包装我的所有页面。我把og_url设置在componentDidMount之后。我使用的是一个功能组件,所以useEffect钩子在组件挂载后执行。在此之前,我将og_url设置为https://example.com

然而,当页面被Facebook爬行时,这个组件挂载就不会发生了。因此,您可以想象,当Facebook爬虫抓取这些页面时,og:url属性被设置为针对所有页面的https://example.com

代码语言:javascript
复制
import Head from "next/head";
import { useEffect } from 'react'

const Wrapper = (props) => {
    const [og_url, setog_url] = useState("")

    useEffect(() => {
        setog_url(window.location.href)
    }, [])

    return (
        <>
            <Head>
                ... other meta tags ...

                <meta property="og:url" content={og_url ? og_url : "https://example.com"} />

            </Head>
            {props.children}
        </>
    )

修复

og:url本质上告诉Facebook忘记了这个页面上的OG标记,并使用其url设置为og:url值的页面中的OG标记。我将og:url设置为"",现在共享调试器获取正确的OG标记。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64532234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档