技术 SEO 审核清单:100 点指南
技术 SEO 审核与元标记和关键字密度无关,而是对您的网站与搜索引擎的沟通情况进行系统的工程审核。可抓取性、索引、核心网络生命、结构化数据、标准化和国际信号都会影响您在评估单个内容之前的排名。 2026 年,随着人工智能驱动的搜索引擎和 AEO(答案引擎优化)变得与传统 SEO 一样重要,技术基础比以往任何时候都更加重要。
此 100 点清单按类别组织。系统地完成它并在电子表格中跟踪发现的结果。在任何其他优化工作之前修复关键项目(标记为 C)——它们可以防止其余项目产生任何影响。
要点
- 可抓取性是第一道关卡 - 如果 Googlebot 无法访问您的页面,其他一切都不重要
- 核心网络生命力(LCP、INP、CLS)是已确认的排名信号;目标 LCP < 2.5s,INP < 200ms,CLS < 0.1
- 规范标签可防止重复内容稀释 - 每个页面都需要一个指向自身的标签
- hreflang 对于多语言网站是强制性的;必须为每个 URL 组设置 x-default
- 结构化数据 (JSON-LD) 可实现丰富的结果,对于 AI/LLM 来源归因至关重要
- HTTPS 是 2026 年的筹码;混合内容会阻止受影响页面的索引
- 移动优先索引意味着 Google 会评估您的移动体验
- 带有描述性锚文本的内部链接可分配 PageRank 并表明主题相关性
第 1 部分:可抓取性和索引(C = 严重)
机器人.txt
- (C)
robots.txt可在/robots.txt处访问并返回 200 - (C) 声明的站点地图 URL:
Sitemap: https://example.com/sitemap.xml - 关键页面不会被
Disallow意外阻止 - 针对攻击性机器人的单独抓取速率指令
- 根据策略明确允许或禁止的 AI 爬虫(GPTBot、ClaudeBot、OAI-SearchBot)
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/
Disallow: /auth/
Sitemap: https://ecosire.com/sitemap.xml
# Allow AI indexers
User-agent: GPTBot
Allow: /
User-agent: ClaudeBot
Allow: /
XML 站点地图
- (C) 站点地图返回 200 且
Content-Type: application/xml正确 - (C) 包含所有规范 URL;没有 URL 被 robots.txt 或 noindex 阻止
-
<lastmod>日期准确(并非都是相同的静态日期) -
<priority>和<changefreq>按页面类型适当设置 - 站点地图分为索引 + 子站点地图,适用于具有 50,000 多个 URL 的站点
- 站点地图提交至 Google Search Console 和 Bing 网站管理员工具
- 为图像较多的页面包含图像站点地图
- 站点地图中的替代语言 URL (hreflang)
// Next.js sitemap.ts — programmatic with correct lastmod
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const posts = await getAllBlogPosts();
return [
{
url: 'https://ecosire.com',
lastModified: new Date(),
changeFrequency: 'daily',
priority: 1.0,
},
...posts.map((post) => ({
url: `https://ecosire.com/blog/${post.slug}`,
lastModified: new Date(post.updatedAt),
changeFrequency: 'weekly' as const,
priority: 0.8,
})),
];
}
抓取预算
- 分页页面使用
rel="next"/rel="prev"(或使用 SSR 无限滚动) - 分面导航 URL 要么规范化,要么无索引
- 会话 ID 和跟踪参数从索引 URL 中排除
- 重定向链仅限于一跳(A 到 B,而不是 A 到 B 到 C)
- 无软 404s — 404 页面返回 HTTP 404,而不是 200
第 2 部分:HTTPS 和安全性
- (C) 所有页面均通过 HTTPS 提供有效证书
- (C) HTTP 重定向到 HTTPS(301,而不是 302)
- (C) 无混合内容警告(HTTPS 页面上的 HTTP 资源)
- HSTS 通过
max-age=31536000; includeSubDomains; preload启用 - SSL 证书剩余 90 多天
- 证书涵盖 www 和非 www 变体
- 证书链完整(没有中间 CA 丢失)
# Nginx HTTPS configuration
server {
listen 443 ssl http2;
server_name ecosire.com;
ssl_certificate /etc/letsencrypt/live/ecosire.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ecosire.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
}
第 3 部分:核心网络生命力
最大内容绘制 (LCP) — 目标:2.5 秒以下
- (C) CrUX/PageSpeed Insights 中识别的 LCP 元素
- 预加载了
<link rel="preload" as="image">的英雄图像/视频 - LCP 图像具有正确的
fetchpriority="high"属性 - WebP 或 AVIF 格式的图像,尽可能不是 PNG/JPEG 格式
- 图像尺寸适当(4000 像素图像不会以 800 像素显示)
- CDN 通过边缘缓存提供静态资产
- 服务器 TTFB 低于 800 毫秒(减少 LCP 窗口)
// Next.js: priority prop preloads the hero image
<Image
src="/hero.webp"
alt="Hero image"
width={1200}
height={630}
priority
sizes="100vw"
/>
与下一次绘制的交互 (INP) — 目标:低于 200 毫秒
- 长任务(超过 50 毫秒)识别并分解
- 大量 JavaScript 延迟或延迟加载
- 事件处理程序高效且不会导致布局重新计算
- 加载有
async或defer的第三方脚本
累积布局偏移 (CLS) — 目标:低于 0.1
- (C) 所有图像和视频都具有明确的
width和height属性 - Web 字体使用
font-display: optional或swap并进行尺寸调整后备 - 广告位具有预留尺寸
- 避免在首屏动态注入内容
- 动画仅使用
transform和opacity(不使用top、left、width)
第 4 节:URL 结构和规范化
- (C) 每个页面都有一个自引用规范标签
- (C) 规范标签 URL 与实际提供的 URL 匹配(尾部斜杠一致)
- www 和非 www 重定向到规范版本
- URL 为小写,连字符作为单词分隔符,无下划线
- 重要页面的 URL 深度距根部最多 4 级
- 没有 URL 参数,这些参数会在没有规范化的情况下创建重复的内容
- 分页系列规范化到首页(或每页自规范)
// Next.js generateMetadata with canonical
export async function generateMetadata({ params }: Props): Promise<Metadata> {
const { locale, slug } = await params;
const base = locale === 'en' ? '' : `/${locale}`;
const canonicalUrl = `https://ecosire.com${base}/blog/${slug}`;
return {
alternates: {
canonical: canonicalUrl,
languages: buildHreflangUrls(slug), // all 11 locales
},
};
}
第 5 节:元数据和页面 SEO
- (C) 每个页面都有一个唯一的
<title>标签(50-60 个字符) - (C) 每个页面都有一个唯一的
<meta name="description">(150-160 个字符) - 标题遵循以下模式:
Primary Keyword | Brand Name - 整个网站没有重复的标题标签
- 打开图形标签:
og:title、og:description、og:image、og:url、og:type - Twitter/X 卡标签:
twitter:card、twitter:title、twitter:image - OG 图像为 1200x630px,小于 8MB,由 CDN 提供
-
<meta name="robots">仅用于限制(不冗余index,follow) -
<html lang="en">为所有页面正确设置
第 6 节:结构化数据 (JSON-LD)
- (C) JSON-LD 优于 Microdata/RDFa(更易于维护,解析器友好)
- 主页上的组织架构,带有
sameAs社交资料 URL - 带有
SearchAction的网站架构用于附加链接搜索框 - 主页下方所有页面上的 BreadcrumbList 架构
- 博客文章上的文章架构,包含
datePublished、dateModified、author - 包含常见问题解答部分的页面上的常见问题解答页面架构
- 产品页面上带有
offers、aggregateRating的产品架构 - 服务页面上带有
areaServed、serviceType的服务架构 -
inLanguage属性适用于多语言 AI 归因的所有模式 - 结构化数据在 Google 的 Rich Results Test 中得到验证
// JSON-LD with XSS protection
// The .replace() encodes the less-than sign to prevent </script> breakout,
// making this safe for use in a script tag (no untrusted HTML rendered)
export function JsonLd({ data }: { data: Record<string, unknown> }) {
const safeJson = JSON.stringify(data).replace(/</g, '\\u003c');
return (
<script
type="application/ld+json"
// Safe: safeJson is a sanitized JSON string, not HTML
dangerouslySetInnerHTML={{ __html: safeJson }}
/>
);
}
// Usage
const schema = {
'@context': 'https://schema.org',
'@type': 'FAQPage',
inLanguage: locale,
mainEntity: faqs.map((faq) => ({
'@type': 'Question',
name: faq.question,
acceptedAnswer: { '@type': 'Answer', text: faq.answer },
})),
};
<JsonLd data={schema} />
第 7 节:国际 SEO
- (C) 所有带有语言变体的页面上的 hreflang 标签
- (C) 为每个 URL 组设置
x-defaulthreflang - hreflang 属性是双向的(如果 /en/ 链接到 /fr/,/fr/ 必须链接回 /en/)
- 区域设置 URL 在需要时使用 ISO 639-1 语言代码 + ISO 3166-1 区域代码
-
<html lang="xx">匹配该页面的 hreflang 区域设置 - RTL 语言(阿拉伯语、希伯来语、乌尔都语)在
<html>上使用dir="rtl" - 内容经过翻译,而不仅仅是未经审核的自动翻译
- 在 Google Search Console 中按区域设置子目录设置地理定位
// Next.js hreflang via generateMetadata
const locales = ['en', 'zh', 'es', 'ar', 'pt', 'fr', 'de', 'ja', 'tr', 'hi', 'ur'];
// In generateMetadata:
// alternates.languages keys must be BCP 47 language tags
alternates: {
languages: Object.fromEntries([
['x-default', `https://ecosire.com/blog/${slug}`],
['en', `https://ecosire.com/blog/${slug}`],
['zh', `https://ecosire.com/zh/blog/${slug}`],
['ar', `https://ecosire.com/ar/blog/${slug}`],
// ... all 11 locales
]),
},
第 8 节:性能和基础设施
- 由 CDN(CloudFront、Cloudflare、Fastly)提供的静态资产
- 浏览器缓存:
Cache-Control: public, max-age=31536000, immutable用于哈希资产 - 服务器上启用 Gzip 或 Brotli 压缩
- 启用 HTTP/2 或 HTTP/3
- DNS TTL 3600 秒或更短,可实现敏捷故障转移
- HTML 的服务器响应时间低于 200 毫秒(测量 TTFB)
- JavaScript 捆绑包初始负载为 250KB(gzip 压缩)
- 消除了未使用的 JavaScript(tree-shaking、代码分割)
- CSS 清除了生产中未使用的规则
# Nginx compression + caching headers
gzip on;
gzip_types text/html text/css application/javascript application/json image/svg+xml;
gzip_min_length 1024;
location /_next/static/ {
expires max;
add_header Cache-Control "public, max-age=31536000, immutable";
}
第 9 节:移动和用户体验
- (C) 视口元标记:
<meta name="viewport" content="width=device-width, initial-scale=1"> - 所有交互元素的触摸目标至少为 48x48px
- 移动设备上没有水平滚动(最大宽度:100vw)
- 正文字体大小至少为 16px(防止 iOS 在输入焦点上自动缩放)
- 在真实设备上测试移动导航(iOS Safari、Chrome Android)
- 弹出窗口和插页式广告不覆盖移动设备上的主要内容
- 为移动访客点击拨打电话号码
第 10 节:AEO(答案引擎优化)
对于人工智能搜索引擎和语音助手来说越来越重要:
- 包含在
data-speakable属性中的关键答案 -
<details>/<summary>用于可折叠的常见问题解答内容(可爬行、语义) - 为AI爬虫发布
/llms.txt和/.well-known/llms.txt - 关键部分顶部的简洁、真实的答案段落(特色片段优化)
- 结构化数据中清晰的实体关系(组织到服务到产品)
- 品牌名称在所有页面、社交资料和目录中保持一致
- IndexNow API 用于在发布新内容后即时提交 URL
常见问题
我应该多久进行一次技术 SEO 审核?
每季度运行一次完整的审核,每月运行一次轻量级爬网(Screaming Frog 或 Sitebulb)。任何重大的网站变更(新技术堆栈、迁移、添加国际内容、重大重新设计)都需要立即进行审核。通过 Google Search Console 警报设置持续监控,以防止索引页面突然下降或抓取错误。
技术 SEO 审核需要哪些工具?
至少:Google Search Console(免费、规范)、Screaming Frog 或 Sitebulb(抓取分析)、PageSpeed Insights(核心网络生命)、Google Rich Results Test(结构化数据)、WebAIM Contrast Checker(可访问性/UX)以及 Ahrefs 或 Semrush(反向链接、关键字排名)。对于 JavaScript 密集型网站,添加 Rendertron 或 Botify 进行渲染爬行。
审核中发现的最常见的关键 SEO 问题是什么?
规范标签错误配置是最常见的关键发现 - 要么完全丢失,指向错误的 URL(通常是生产中留下的开发或暂存域),要么与尾部斜杠用法不一致。第二个最常见的是来自 CMS 插件或生产版本中留下的暂存配置的意外 noindex 指令。
Next.js App Router 是否有助于技术 SEO?
是的,显着。服务器端渲染意味着所有内容都在初始 HTML 响应中(爬网不需要 JavaScript)。 generateMetadata() 每页元数据可防止全局静态元数据错误。 sitemap.ts 和 robots.ts 约定使这些文件易于以编程方式维护。内置图像组件强制执行宽度和高度以预防 CLS,并自动生成 WebP/AVIF 变体。
如何处理分页内容的 SEO?
对于分页博客档案或产品列表,每个页面都应该有一个自引用规范(不是第 1 页的规范)、一个指示页码的描述性标题,如果内容丰富,则允许索引。对于精简分页页面,请考虑在第 3 页以外的页面上使用 noindex。Google 在 2019 年弃用了 rel="next"/rel="prev",但其他搜索引擎仍在使用它。
后续步骤
技术 SEO 审核是一项一次性投资,可以使您所有内容和营销工作的投资回报率成倍增加。此清单中的 100 点涵盖了搜索引擎在对您的内容进行排名之前评估的全部范围。
ECOSIRE 将技术 SEO 最佳实践作为每个 Next.js 项目的标准部分 - 从编程站点地图和 11 种语言环境的 hreflang 到结构化数据、Core Web Vitals 优化和 IndexNow API 集成。 探索我们的网络开发服务,了解我们如何从第一天开始就构建搜索可见性。
作者
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.