跳到主内容

Next.js 中处理软 404 页面的 SEO 方案

搬家的蚂蚁0 浏览
搬家
robots.txt 不是阻止索引的手段,而是控制抓取。要阻止索引用 noindex meta 标签或 X-Robots-Tag header。常见的 robots.txt 配置:允许所有页面、禁止 /admin、禁止 /api、指向 sitemap.xml。

Next.js Image 组件自动优化图片格式(WebP/AVIF)、尺寸和懒加载,对 LCP 优化效果显著。LCP 图片要加 priority 属性,否则懒加载会延迟 LCP 时间。但不要给所有图片加 priority,只给首屏最大的图片。

SEO 友好的 URL 用 kebab-case:/forum/thread/how-to-optimize-nextjs-seo。避免下划线、驼峰、中文 URL(虽然 Google 支持但不利于分享)。Next.js 中可以用 slugify 函数生成 URL 友好的 slug。
查看历史

16 回复

  1. 潜水
    潜水员第 2 楼
    补充一点:JSON-LD 用 Article 类型必须包含 author 和 datePublished,否则 Rich Results 不显示。后续有新发现再来更新。
  2. 打工
    打工人之光第 3 楼
    分享一下我的做法:sitemap.xml 用 ISR 缓存(revalidate: 3600),发布新内容后 revalidatePath 刷新。欢迎大家补充。
  3. 数星
    数星星第 4 楼
    我之前也遇到过类似问题,robots.txt 控制抓取,noindex 控制索引,两个不要搞混。仅供参考,具体还是要看你的场景。
  4. 烟雨
    烟雨江南第 5 楼
    我的结论恰恰相反:INP 替代 FID 后更严格了,用 next/dynamic 懒加载非首屏组件效果明显。希望对你有帮助。
  5. 结网
    结网的蜘蛛第 6 楼
    反对一下,我的测试结果不是这样:404 页面一定要返回 404 状态码,软 404(返回 200)会被当作低质内容。
  6. BU
    Bug猎人第 7 楼
    我的项目里也用了这个方案,Next.js 15 的 viewport 必须单独导出,不放 metadata 里了。希望少走弯路。
  7. 雪夜
    雪夜归人第 8 楼
    我的团队是这样做的:hreflang 自引用是必须的,我之前漏了导致多语言版本全没被索引。感谢楼主的启发。
  8. 路过
    路过的甲第 9 楼
    我的看法略有不同:PageSpeed 从 60 到 95 的关键:next/image + priority + 移除首屏 framer-motion。这只是个人经验,不一定通用。
  9. 大叔
    大叔第 10 楼
    补充一个可能被忽略的点:OG 图片 1200x630 是标准尺寸,用 next/og 动态生成效果最好。希望少走弯路。
  10. 拾光
    拾光者第 11 楼
    我调研过这块,404 页面一定要返回 404 状态码,软 404(返回 200)会被当作低质内容。有疑问可以继续问。
  11. 热更
    热更新选手第 12 楼
    Next.js 15 的 viewport 必须单独导出,不放 metadata 里了。
  12. 等风
    等风来第 13 楼
    我的项目里也用了这个方案,Next.js 15 的 viewport 必须单独导出,不放 metadata 里了。后续有新发现再来更新。
  13. 吃代
    吃代码的猫第 14 楼
    说个反直觉的发现:404 页面一定要返回 404 状态码,软 404(返回 200)会被当作低质内容。
  14. 慢慢
    慢慢来第 15 楼
    补充一点:Next.js 15 的 viewport 必须单独导出,不放 metadata 里了。效果因项目而异,建议实际测试。
  15. 终端
    终端常驻民第 16 楼
    上周刚好踩了这个坑,404 页面一定要返回 404 状态码,软 404(返回 200)会被当作低质内容。
  16. 思考
    思考的柴犬第 17 楼
    我的实践经验和你的不太一样:INP 替代 FID 后更严格了,用 next/dynamic 懒加载非首屏组件效果明显。后续有新发现再来更新。
登录后可回复