[{"data":1,"prerenderedAt":884},["ShallowReactive",2],{"blog-seo-technical-audit-checklist":3,"blog-prev-seo-technical-audit-checklist":630,"blog-next-seo-technical-audit-checklist":715},{"id":4,"title":5,"author":6,"body":7,"canonical":613,"category":614,"cover":613,"date":615,"description":616,"draft":617,"extension":618,"keywords":613,"meta":619,"navigation":620,"noindex":617,"ogImage":613,"path":621,"seo":622,"seoDescription":613,"seoTitle":613,"stem":623,"tags":624,"updated":613,"__hash__":629},"blog\u002Fblog\u002Fseo-technical-audit-checklist.md","软件公司 SEO 技术检查清单:15 个常见问题","元析智能",{"type":8,"value":9,"toc":580},"minimark",[10,14,19,22,27,55,59,87,91,111,115,118,122,157,161,187,191,214,218,237,241,244,248,275,279,299,303,327,331,334,338,393,397,416,420,423,427,473,477,496,500,519,522,525,528,531,534,537,540,545,548,553,556,561,564,569,572,577],[11,12,13],"p",{},"软件公司的站技术问题特别多,因为产品页经常是 SPA(单页应用),文档站结构复杂,动态参数一堆。技术问题不修,内容做得再好也排不上去——搜索引擎根本抓不到。这份清单列我们诊断时最常见的 15 个技术 SEO 问题,按类分组,每条写清楚查什么、怎么查、怎么修。照着过一遍,基本能覆盖软件公司站的主要技术坑。",[15,16,18],"h2",{"id":17},"一渲染问题spassr","一、渲染问题(SPA\u002FSSR)",[11,20,21],{},"软件公司最常踩的坑。React、Vue 做的 SPA,默认客户端渲染,搜索引擎抓到的是空 HTML。",[23,24,26],"h3",{"id":25},"_1-spa-客户端渲染内容抓不到","1. SPA 客户端渲染,内容抓不到",[28,29,30,38,49],"ul",{},[31,32,33,37],"li",{},[34,35,36],"strong",{},"查什么",":页面内容是不是 JS 执行后才出现",[31,39,40,43,44,48],{},[34,41,42],{},"怎么查",":用 Google Search Console 的\"网址检查\"工具,看\"已呈现的页面\"。或者直接 ",[45,46,47],"code",{},"curl"," 你的页面 URL,看返回的 HTML 里有没有正文内容。如果 HTML 是空的壳子,内容全靠 JS 填,就是这个问题",[31,50,51,54],{},[34,52,53],{},"怎么修",":改成 SSR(服务端渲染)或 SSG(静态生成)。React 用 Next.js,Vue 用 Nuxt.js。如果改造成本高,至少把首屏内容和 SEO 关键内容做服务端渲染",[23,56,58],{"id":57},"_2-js-和-css-资源被-robots-屏蔽","2. JS 和 CSS 资源被 robots 屏蔽",[28,60,61,69,82],{},[31,62,63,65,68],{},[34,64,36],{},[66,67],"robots",{},".txt 是不是屏了 \u002Fjs\u002F \u002Fassets\u002F 这类路径",[31,70,71,73,74,77,78,81],{},[34,72,42],{},":打开 ",[45,75,76],{},"yourdomain.com\u002Frobots.txt"," 看有没有 ",[45,79,80],{},"Disallow: \u002Fjs\u002F"," 之类的规则。再在 Google Search Console 的\"网址检查\"里看渲染是否完整",[31,83,84,86],{},[34,85,53],{},":搜索引擎现在需要执行 JS 才能渲染页面,JS 资源必须允许抓取。robots.txt 里删掉对 JS\u002FCSS 路径的 Disallow",[23,88,90],{"id":89},"_3-关键内容-js-动态加载延迟出现","3. 关键内容 JS 动态加载,延迟出现",[28,92,93,98,103],{},[31,94,95,97],{},[34,96,36],{},":重要内容(标题、正文、内链)是不是页面加载后通过 AJAX\u002F接口请求才填充",[31,99,100,102],{},[34,101,42],{},":禁用浏览器 JS,看页面还有多少内容。或者在 Google Search Console 看渲染快照,关键内容在不在",[31,104,105,107,110],{},[34,106,53],{},[108,109],"seo",{}," 关键内容(标题、正文、H1、内链)放进初始 HTML,不要靠 JS 异步加载。非关键内容(评论、推荐)可以异步",[15,112,114],{"id":113},"二收录问题","二、收录问题",[11,116,117],{},"收录是基础,页面没被收录,后面什么都谈不上。",[23,119,121],{"id":120},"_4-robotstxt-屏蔽了重要页面","4. robots.txt 屏蔽了重要页面",[28,123,124,131,148],{},[31,125,126,128,130],{},[34,127,36],{},[66,129],{},".txt 是不是误屏了文档站、博客、产品页",[31,132,133,135,136,139,140,143,144,147],{},[34,134,42],{},":看 ",[45,137,138],{},"robots.txt",",特别留意 ",[45,141,142],{},"Disallow: \u002F"," 这种全站屏蔽(测试环境漏改到生产是常见原因),以及 ",[45,145,146],{},"Disallow: \u002Fdocs\u002F"," 这种局部屏蔽",[31,149,150,152,153,156],{},[34,151,53],{},":删掉误加的 Disallow。测试环境用 ",[45,154,155],{},"noindex"," meta 标签或 HTTP 认证,不要用 robots.txt 屏蔽——robots.txt 屏蔽的页面搜索引擎还是会爬,只是不索引,而且会阻止发现内链",[23,158,160],{"id":159},"_5-误用-noindex","5. 误用 noindex",[28,162,163,171,179],{},[31,164,165,167,168,170],{},[34,166,36],{},":重要页面是不是被加了 ",[45,169,155],{}," meta 标签",[31,172,173,175,176,178],{},[34,174,42],{},":用 Screaming Frog 爬全站,筛 ",[45,177,155],{}," 页面。重点看产品页、文档页、博客文章有没有被误标",[31,180,181,183,184,186],{},[34,182,53],{},":去掉误加的 ",[45,185,155],{},"。常见原因:开发环境用了 noindex,上线忘改;CMS 模板默认 noindex 没改;某些插件自动加 noindex",[23,188,190],{"id":189},"_6-canonical-标签错误","6. canonical 标签错误",[28,192,193,201,209],{},[31,194,195,197,200],{},[34,196,36],{},[198,199],"canonical",{}," 标签指向对不对,有没有指向自己(等于没用)、指向错误页面、或者循环指向",[31,202,203,205,208],{},[34,204,42],{},[206,207],"screaming",{}," Frog 爬取,看每个页面的 canonical 指向。重点查:canonical 是不是指向自己(正常情况应该指向规范版,如果只有一个版本就指向自己,但有多个 URL 版本时要指向规范版),有没有指向 404 或错误页",[31,210,211,213],{},[34,212,53],{},":每个页面 canonical 指向它的规范 URL。分页、参数变体、移动版都要正确指向规范版。不要用 canonical 解决跨语言或跨设备问题,那是 hreflang 的事",[23,215,217],{"id":216},"_7-孤立页面没有内链指向","7. 孤立页面(没有内链指向)",[28,219,220,225,232],{},[31,221,222,224],{},[34,223,36],{},":站内有没有没有任何内链指向的页面",[31,226,227,229,231],{},[34,228,42],{},[206,230],{}," Frog 爬取后,看\"Inlinks\"为 0 的页面。这些页面搜索引擎很难发现,权重也传不进去",[31,233,234,236],{},[34,235,53],{},":给孤立页面加内链。从相关文章、分类页、面包屑导航链接过去。软件公司常见孤立页:旧版文档、特定版本的功能页、历史博客",[15,238,240],{"id":239},"三速度问题","三、速度问题",[11,242,243],{},"百度和 Google 都把速度作为排名因素。软件公司站 JS 重,速度问题尤其多。",[23,245,247],{"id":246},"_8-首屏加载慢lcp-超过-25-秒","8. 首屏加载慢(LCP 超过 2.5 秒)",[28,249,250,258,266],{},[31,251,252,254,257],{},[34,253,36],{},[255,256],"largest",{}," Contentful Paint(最大内容绘制)时间",[31,259,260,262,265],{},[34,261,42],{},[263,264],"google",{}," PageSpeed Insights 或 Lighthouse 跑一遍,看 LCP 数值。超过 2.5 秒就是差",[31,267,268,270,271,274],{},[34,269,53],{},":首屏内容服务端渲染,关键 CSS 内联,图片懒加载(但首屏图片不要懒加载),字体用 ",[45,272,273],{},"font-display: swap",",减少首屏 JS 阻塞",[23,276,278],{"id":277},"_9-js-包过大","9. JS 包过大",[28,280,281,286,294],{},[31,282,283,285],{},[34,284,36],{},":页面加载的 JS 体积",[31,287,288,290,293],{},[34,289,42],{},[291,292],"chrome",{}," DevTools 的 Network 面板,看 JS 资源总大小(传输后)。超过 500KB 就偏大了",[31,295,296,298],{},[34,297,53],{},":代码分割(code splitting),按路由懒加载,Tree shaking 去掉没用的依赖,把第三方库(分析、聊天)改成异步加载",[23,300,302],{"id":301},"_10-图片未优化","10. 图片未优化",[28,304,305,310,318],{},[31,306,307,309],{},[34,308,36],{},":图片体积和格式",[31,311,312,314,317],{},[34,313,42],{},[315,316],"page-speed",{}," Insights 会列出未优化的图片。或者手动看图片大小,单张超过 200KB 的要查",[31,319,320,322,323,326],{},[34,321,53],{},":用 WebP 或 AVIF 格式(比 JPEG\u002FPNG 小 30%-50%),图片压缩,设置合适的宽高属性(避免布局偏移),用 ",[45,324,325],{},"loading=\"lazy\""," 懒加载非首屏图片",[15,328,330],{"id":329},"四结构化数据","四、结构化数据",[11,332,333],{},"结构化数据帮搜索引擎理解你的内容,软件公司尤其要标 SoftwareApplication、FAQ、Article。",[23,335,337],{"id":336},"_11-没有任何-schemaorg-结构化数据","11. 没有任何 Schema.org 结构化数据",[28,339,340,345,356],{},[31,341,342,344],{},[34,343,36],{},":页面有没有结构化数据标记",[31,346,347,349,351,352,355],{},[34,348,42],{},[263,350],{}," Rich Results Test 工具,输入 URL 看有没有结构化数据。或者看页面源码有没有 ",[45,353,354],{},"application\u002Fld+json"," 的 script 标签",[31,357,358,360,361],{},[34,359,53],{},":软件公司至少标这几种:\n",[28,362,363,369,375,381,387],{},[31,364,365,368],{},[45,366,367],{},"SoftwareApplication",":产品页,标名称、描述、价格、评分",[31,370,371,374],{},[45,372,373],{},"FAQPage",":FAQ 内容页",[31,376,377,380],{},[45,378,379],{},"Article",":博客文章",[31,382,383,386],{},[45,384,385],{},"BreadcrumbList",":面包屑导航",[31,388,389,392],{},[45,390,391],{},"Organization",":关于页\u002F首页",[23,394,396],{"id":395},"_12-结构化数据错误或与页面内容不符","12. 结构化数据错误或与页面内容不符",[28,398,399,404,411],{},[31,400,401,403],{},[34,402,36],{},":结构化数据格式对不对,内容跟页面实际是不是一致",[31,405,406,408,410],{},[34,407,42],{},[263,409],{}," Search Console 的\"增强型报告\"会列出结构化数据错误。Rich Results Test 看具体警告",[31,412,413,415],{},[34,414,53],{},":常见错误——必填字段缺失(如 SoftwareApplication 缺 name)、数据对不上(标记了 rating 但页面没有评分组件)、嵌套层级错。按 Search Console 报的错误逐条修",[15,417,419],{"id":418},"五url-问题","五、URL 问题",[11,421,422],{},"URL 结构影响收录和权重传递,软件公司站尤其乱。",[23,424,426],{"id":425},"_13-url-不语义化","13. URL 不语义化",[28,428,429,437,454],{},[31,430,431,433,436],{},[34,432,36],{},[434,435],"url",{}," 是不是有意义的词,还是一串 ID",[31,438,439,441,442,445,446,449,450,453],{},[34,440,42],{},":看你的 URL 长什么样。",[45,443,444],{},"\u002Fproducts\u002Fcrm"," 是好的,",[45,447,448],{},"\u002Fp\u002F12345"," 或 ",[45,451,452],{},"\u002F?id=12345"," 是差的",[31,455,456,458,460,461,464,465,468,469,472],{},[34,457,53],{},[434,459],{}," 用语义化路径,包含关键词。产品页 ",[45,462,463],{},"\u002Fproducts\u002F产品名",",文档页 ",[45,466,467],{},"\u002Fdocs\u002F功能名",",博客 ",[45,470,471],{},"\u002Fblog\u002F文章标题","。改 URL 要做 301 重定向,旧 URL 权重传给新 URL",[23,474,476],{"id":475},"_14-url-参数导致重复内容","14. URL 参数导致重复内容",[28,478,479,484,491],{},[31,480,481,483],{},[34,482,36],{},":同一内容是不是有多个 URL 版本(参数不同)",[31,485,486,488,490],{},[34,487,42],{},[206,489],{}," Frog 爬取,看有没有大量 URL 只是参数不同但内容相同。常见:排序参数、筛选参数、追踪参数(utm)",[31,492,493,495],{},[34,494,53],{},":对参数 URL 用 canonical 指向规范版。或者用 Google Search Console 的\"网址参数\"工具告诉 Google 哪些参数不影响内容。追踪参数(utm_source 等)最好在服务端处理,不要让搜索引擎索引带参数的版本",[23,497,499],{"id":498},"_15-重定向链过长","15. 重定向链过长",[28,501,502,509,514],{},[31,503,504,506,508],{},[34,505,36],{},[434,507],{}," 是不是经过多次重定向才到最终页",[31,510,511,513],{},[34,512,42],{},":用 Redirect Checker 工具,或者 Screaming Frog 看\"重定向链\"。超过 2 次跳转就是问题",[31,515,516,518],{},[34,517,53],{},":把重定向链改成直接跳转。常见原因:HTTP → HTTPS → www → 非 www → 新 URL,层层跳。改成 HTTP 直接 301 到最终 URL。重定向链过长会浪费抓取预算,权重传递也会衰减",[15,520,521],{"id":521},"怎么用这份清单",[11,523,524],{},"建议按顺序过一遍:先解决渲染问题(第一类),这是基础,不解决后面都白搭。再查收录(第二类),确保该收录的页面都收录了。然后是速度和结构化数据(URL 问题随时修)。",[11,526,527],{},"每类查一遍大概半天到一天。全站完整技术审计我们一般用 2-3 天。这份清单是自查版,自己能上手查。如果查出来问题多,或者改不动(比如 SPA 改 SSR 工程量大),再找专业团队。",[15,529,530],{"id":530},"总结",[11,532,533],{},"软件公司站最常踩的 15 个技术 SEO 问题:渲染(SPA 客户端渲染、JS 被屏、内容异步加载)、收录(robots 误屏、noindex 误用、canonical 错、孤立页)、速度(LCP 慢、JS 大、图片没优化)、结构化数据(没有、有但错)、URL(不语义化、参数重复、重定向链长)。工具用 Google Search Console、Screaming Frog、PageSpeed Insights 这三个就够自查。",[11,535,536],{},"查出来问题不知道怎么改,联系我们聊聊。",[15,538,539],{"id":539},"常见问题",[11,541,542],{},[34,543,544],{},"Q: 自查需要什么工具?",[11,546,547],{},"A: 三个就够:Google Search Console(免费,看收录和抓取)、Screaming Frog(免费版能爬 500 个 URL,够小站用)、PageSpeed Insights(免费,看速度)。专业诊断还会用 Ahrefs Site Audit 或 Sitebulb,但自查上面三个够用。",[11,549,550],{},[34,551,552],{},"Q: SPA 一定要改 SSR 吗?",[11,554,555],{},"A: 几乎一定要。Google 现在能执行 JS 渲染,但有延迟,且不是所有 JS 内容都能抓到。百度对 JS 渲染支持更差。SPA 不改 SSR,SEO 效果会打很大折扣。如果 SSR 改造工程量太大,退一步用预渲染(prerender)也比纯客户端渲染强。",[11,557,558],{},[34,559,560],{},"Q: 技术问题修了多久见效?",[11,562,563],{},"A: 渲染和收录问题修了,一般 2-4 周搜索引擎重新抓取后开始见效。速度和结构化数据是慢功夫,1-2 个月体现在排名上。URL 改动要做 301,权重传递需要 1-3 个月。",[11,565,566],{},[34,567,568],{},"Q: robots.txt 和 noindex 有什么区别?",[11,570,571],{},"A: robots.txt 是告诉搜索引擎别爬这个 URL(但其实搜索引擎可能还是会爬,只是不索引,且会阻止发现内链)。noindex 是允许爬,但不索引。一般用 noindex 控制索引,robots.txt 只用来屏掉真正不想被抓的资源(如后台、API)。",[11,573,574],{},[34,575,576],{},"Q: 结构化数据对排名有影响吗?",[11,578,579],{},"A: 不直接影响排名,但影响展示效果。标了 FAQ 会有展开式结果,标了 BreadcrumbList 会有面包屑,标了 SoftwareApplication 会有价格等信息展示。展示效果好,点击率高,间接提升排名。Google 官方说结构化数据不是排名因素,但做了比不做好。",{"title":581,"searchDepth":582,"depth":582,"links":583},"",2,[584,590,596,601,605,610,611,612],{"id":17,"depth":582,"text":18,"children":585},[586,588,589],{"id":25,"depth":587,"text":26},3,{"id":57,"depth":587,"text":58},{"id":89,"depth":587,"text":90},{"id":113,"depth":582,"text":114,"children":591},[592,593,594,595],{"id":120,"depth":587,"text":121},{"id":159,"depth":587,"text":160},{"id":189,"depth":587,"text":190},{"id":216,"depth":587,"text":217},{"id":239,"depth":582,"text":240,"children":597},[598,599,600],{"id":246,"depth":587,"text":247},{"id":277,"depth":587,"text":278},{"id":301,"depth":587,"text":302},{"id":329,"depth":582,"text":330,"children":602},[603,604],{"id":336,"depth":587,"text":337},{"id":395,"depth":587,"text":396},{"id":418,"depth":582,"text":419,"children":606},[607,608,609],{"id":425,"depth":587,"text":426},{"id":475,"depth":587,"text":476},{"id":498,"depth":587,"text":499},{"id":521,"depth":582,"text":521},{"id":530,"depth":582,"text":530},{"id":539,"depth":582,"text":539},null,"SEO","2026-01-28","软件公司网站常见的 15 个技术 SEO 问题,按渲染、收录、速度、结构化数据、URL 五类整理。每个写清楚查什么、怎么查、怎么修,照着这份清单逐条过一遍,基本覆盖主要技术坑。",false,"md",{},true,"\u002Fblog\u002Fseo-technical-audit-checklist",{"title":5,"description":616},"blog\u002Fseo-technical-audit-checklist",[625,626,627,628],"技术SEO","SEO检查","网站诊断","软件公司","V-yKYGQTmQONKHOmvPibM6xelo1d8NRq5qCX0n4NaSo",{"id":631,"title":632,"author":6,"body":633,"canonical":613,"category":703,"cover":613,"date":704,"description":705,"draft":617,"extension":618,"keywords":613,"meta":706,"navigation":620,"noindex":617,"ogImage":613,"path":707,"seo":708,"seoDescription":613,"seoTitle":613,"stem":709,"tags":710,"updated":613,"__hash__":714},"blog\u002Fblog\u002Flog-analysis-tool-choice.md","日志分析工具选型：小站别买贵的那套",{"type":8,"value":634,"toc":695},[635,638,642,645,648,652,655,658,661,665,668,671,674,677,680,683,686,689,692],[11,636,637],{},"日志分析工具的价格差距很大，从零成本到一个月几百美元都有。选错的代价不是钱，是数据没人看。我们的判断标准只有一个：你的站每天多少行日志。按这个分三档，基本不会选错。",[15,639,641],{"id":640},"一天一万行以下命令行就够","一天一万行以下：命令行就够",[11,643,644],{},"这个量级用 awk 加 grep 就能解决。筛出 Googlebot 和百度蜘蛛的请求，按路径统计次数，按状态码分布看一眼，二十分钟出结果。",[11,646,647],{},"写成一个脚本存下来，以后每次跑同一条命令。小站做日志分析的目的通常只有两个：确认蜘蛛来没来、看哪些页面被抓得多。这两个问题不值得买工具。",[15,649,651],{"id":650},"十万到一百万行goaccess-或桌面工具","十万到一百万行：GoAccess 或桌面工具",[11,653,654],{},"GoAccess 是开源的，命令行跑完直接输出一个 HTML 报表，状态码、路径、UA、时间分布都有。它的优点是快，一百万行几分钟跑完。",[11,656,657],{},"Screaming Frog 的日志分析模块更长于 SEO 视角的解读，能把日志和爬取结果对上，看蜘蛛抓的页面和站内实际页面差多少。缺点是贵，而且大文件要预处理。",[11,659,660],{},"我们现在的做法是两者都用：GoAccess 看整体分布，桌面工具看具体页面对不上在哪。",[15,662,664],{"id":663},"一百万行以上上云端","一百万行以上：上云端",[11,666,667],{},"这个量级本地方案开始吃力，几十 G 的文件解压、合并、查询都要等。云端日志服务按量计费，写完 SQL 就能查，还能做看板。",[11,669,670],{},"一个客户每天 80 万行日志，用云端方案一个月两百美元左右。听着不便宜，但比养一个人天天导数据便宜。",[15,672,673],{"id":673},"预处理比工具重要",[11,675,676],{},"多台服务器的日志要先合并，时区统一到东八区，压缩包先解开，蜘蛛 UA 要先筛出来。这一步不做，什么工具都白搭。",[15,678,679],{"id":679},"一个更实际的做法",[11,681,682],{},"2025 年 12 月我们停掉了所有付费日志看板，改成每个月第一周跑一次固定脚本，输出一份 3 页的 PDF，直接发给客户。里面的内容就四块：蜘蛛请求量趋势、路径分布前 20、状态码分布、和上月的对比。",[11,684,685],{},"客户不看后台，他们看结论。你把一个可交互的看板给他，他打开两次就不看了。一份 3 页的 PDF 反而每次都有人读。",[11,687,688],{},"我们写了一个预处理脚本，输入原始 access.log，输出只含蜘蛛请求的 CSV，附带时间、路径、状态码、UA。后面换什么工具都能直接用。",[15,690,691],{"id":691},"我的立场",[11,693,694],{},"别为了看蜘蛛抓了多少买一套 BI。日志分析是诊断动作，不是日常报表。一个月看一次够了，平时盯着 GSC 的抓取统计就行。工具越重，越容易变成买了不用。",{"title":581,"searchDepth":582,"depth":582,"links":696},[697,698,699,700,701,702],{"id":640,"depth":582,"text":641},{"id":650,"depth":582,"text":651},{"id":663,"depth":582,"text":664},{"id":673,"depth":582,"text":673},{"id":679,"depth":582,"text":679},{"id":691,"depth":582,"text":691},"工具评测","2026-01-27","每天 80 万行日志，云端方案一个月两百美元，本地方案零成本。这篇按日志量分三档给方案，写清 GoAccess、桌面工具和云端各自的适用边界。",{},"\u002Fblog\u002Flog-analysis-tool-choice",{"title":632,"description":705},"blog\u002Flog-analysis-tool-choice",[711,712,713],"日志分析","工具选型","抓取","qJasfDliJpH3W69-Y8Q4bLS1t8h6rpg_VgiB3nBK8Rg",{"id":716,"title":717,"author":6,"body":718,"canonical":613,"category":625,"cover":613,"date":873,"description":874,"draft":617,"extension":618,"keywords":613,"meta":875,"navigation":620,"noindex":617,"ogImage":613,"path":876,"seo":877,"seoDescription":613,"seoTitle":613,"stem":878,"tags":879,"updated":613,"__hash__":883},"blog\u002Fblog\u002Fmultilingual-sitemap-structure.md","多语言站 sitemap：一个索引文件管 40 个语言版本",{"type":8,"value":719,"toc":864},[720,723,726,729,761,764,795,798,802,805,808,811,832,836,839,842,845,848,851,854,857,860],[11,721,722],{},"多语言 sitemap 的正确结构只有一种：一个 sitemapindex，按语言拆成子 sitemap，每条 URL 带上其他语言版本的 hreflang 注解。混在一个文件里，超过 5 万条会被截断，权重也分散。",[15,724,725],{"id":725},"结构长什么样",[11,727,728],{},"索引文件只列子文件地址：",[730,731,735],"pre",{"className":732,"code":733,"language":734,"meta":581,"style":581},"language-xml shiki shiki-themes github-light github-dark","\u003Csitemapindex>\n  \u003Csitemap>\u003Cloc>https:\u002F\u002Fexample.com\u002Fsitemap-zh.xml\u003C\u002Floc>\u003C\u002Fsitemap>\n  \u003Csitemap>\u003Cloc>https:\u002F\u002Fexample.com\u002Fsitemap-en.xml\u003C\u002Floc>\u003C\u002Fsitemap>\n\u003C\u002Fsitemapindex>\n","xml",[45,736,737,745,750,755],{"__ignoreMap":581},[738,739,742],"span",{"class":740,"line":741},"line",1,[738,743,744],{},"\u003Csitemapindex>\n",[738,746,747],{"class":740,"line":582},[738,748,749],{},"  \u003Csitemap>\u003Cloc>https:\u002F\u002Fexample.com\u002Fsitemap-zh.xml\u003C\u002Floc>\u003C\u002Fsitemap>\n",[738,751,752],{"class":740,"line":587},[738,753,754],{},"  \u003Csitemap>\u003Cloc>https:\u002F\u002Fexample.com\u002Fsitemap-en.xml\u003C\u002Floc>\u003C\u002Fsitemap>\n",[738,756,758],{"class":740,"line":757},4,[738,759,760],{},"\u003C\u002Fsitemapindex>\n",[11,762,763],{},"子文件里每条 URL 带完整语言组：",[730,765,767],{"className":732,"code":766,"language":734,"meta":581,"style":581},"\u003Curl>\n  \u003Cloc>https:\u002F\u002Fexample.com\u002Fzh\u002Fdocs\u002Fapi\u003C\u002Floc>\n  \u003Cxhtml:link rel=\"alternate\" hreflang=\"en\" href=\"https:\u002F\u002Fexample.com\u002Fen\u002Fdocs\u002Fapi\"\u002F>\n  \u003Cxhtml:link rel=\"alternate\" hreflang=\"zh-Hans\" href=\"https:\u002F\u002Fexample.com\u002Fzh\u002Fdocs\u002Fapi\"\u002F>\n\u003C\u002Furl>\n",[45,768,769,774,779,784,789],{"__ignoreMap":581},[738,770,771],{"class":740,"line":741},[738,772,773],{},"\u003Curl>\n",[738,775,776],{"class":740,"line":582},[738,777,778],{},"  \u003Cloc>https:\u002F\u002Fexample.com\u002Fzh\u002Fdocs\u002Fapi\u003C\u002Floc>\n",[738,780,781],{"class":740,"line":587},[738,782,783],{},"  \u003Cxhtml:link rel=\"alternate\" hreflang=\"en\" href=\"https:\u002F\u002Fexample.com\u002Fen\u002Fdocs\u002Fapi\"\u002F>\n",[738,785,786],{"class":740,"line":757},[738,787,788],{},"  \u003Cxhtml:link rel=\"alternate\" hreflang=\"zh-Hans\" href=\"https:\u002F\u002Fexample.com\u002Fzh\u002Fdocs\u002Fapi\"\u002F>\n",[738,790,792],{"class":740,"line":791},5,[738,793,794],{},"\u003C\u002Furl>\n",[11,796,797],{},"注意 xhtml 命名空间要声明，漏了整份文件解析失败。",[15,799,801],{"id":800},"_2025-年-12-月那次改造","2025 年 12 月那次改造",[11,803,804],{},"一个出海 SaaS，40 个语言版本、每个 1500 页左右。之前所有语言塞进一个 sitemap，6 万条 URL 超限被截断，最靠后的 20 个语言版本根本没进文件。hreflang 又只写在 HTML head 里，部分版本模板漏了自引用。",[11,806,807],{},"改成分语言 sitemap、URL 级 hreflang、索引文件汇总之后，Google 读到的 URL 从 3.2 万涨到 5.8 万。德语和西语版本的收录率两个月从 30% 到 68%。",[15,809,810],{"id":810},"三个常见错",[812,813,814,820,826],"ol",{},[31,815,816,819],{},[34,817,818],{},"所有语言混一个文件","：超 5 万条截断，且各语言互相稀释。",[31,821,822,825],{},[34,823,824],{},"sitemap 和 HTML 的 hreflang 不一致","：两处都写可以，但必须一致，冲突时以 HTML 为准。",[31,827,828,831],{},[34,829,830],{},"没有自引用","：语言组里不含自己，整组失效。",[15,833,835],{"id":834},"_40-个版本里哪些值得进-sitemap","40 个版本里，哪些值得进 sitemap",[11,837,838],{},"不是所有语言版本都值得提交。判断标准是\"有没有独立内容\"，机翻出来只换了语言、结构和正文都一样的页面，提交了也是重复内容。我们的做法是先给每个语言版本打分：本地化文案、本地案例、本地价格、本地联系方式，四项里占两项以上才进 sitemap，其余的先 noindex，等翻译团队补齐。",[11,840,841],{},"那次改造里 40 个版本只提交了 26 个，另外 14 个先挡在 noindex 后面。三个月后补齐内容的 9 个版本陆续放开，收录率都在 60% 以上。",[15,843,844],{"id":844},"提交和监控",[11,846,847],{},"sitemapindex 提交一次就够，子文件增删不用重新提交。GSC 的 sitemap 报告能按子文件看\"已发现 URL 数\"，哪个语言的数字明显偏低，就去看那个语言的模板和 hreflang 组。百度这边对整个 sitemapindex 的支持不如 Google 完善，我们会单独提交几个主力语言的子文件。",[15,849,850],{"id":850},"生成的工程做法",[11,852,853],{},"别手写。让后端按语言和内容类型生成，每次内容发布触发增量更新，lastmod 只改真正变动的那几条。多语言站最怕的是翻译平台回写时把 URL 改了但 sitemap 没跟上，我们在发布流程里加了一步校验：新 URL 必须同时出现在子 sitemap 和对应页面的 hreflang 组里，缺一个就报警。",[15,855,856],{"id":856},"判断",[11,858,859],{},"语言版本少于 5 个的站，不用搞这么复杂，一个 sitemap 加 HTML head 的 hreflang 就够。进入 10 个以上市场、每个市场都有独立内容团队时，sitemap 的组织方式比内容数量更影响收录。",[861,862,863],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":581,"searchDepth":582,"depth":582,"links":865},[866,867,868,869,870,871,872],{"id":725,"depth":582,"text":725},{"id":800,"depth":582,"text":801},{"id":810,"depth":582,"text":810},{"id":834,"depth":582,"text":835},{"id":844,"depth":582,"text":844},{"id":850,"depth":582,"text":850},{"id":856,"depth":582,"text":856},"2026-01-29","40 个语言版本、每个几千页，sitemap 怎么组织才不会互相拖累。我们用 2025 年 12 月一个出海 SaaS 的改造，讲清 sitemapindex 的结构、URL 级 hreflang 写法，以及三个常见错。",{},"\u002Fblog\u002Fmultilingual-sitemap-structure",{"title":717,"description":874},"blog\u002Fmultilingual-sitemap-structure",[880,881,882],"sitemap","多语言","hreflang","od7GlkQ0jcoiUW4S8vLNtZgqoffM6pMOtKhAXCaA-3w",1794088108836]