静态资源带上哈希之后,一年后一半地址都404了
做法是从存档站取回2025年8月那份未经改写的原始HTML,把上面的资源地址按归属分好逐条拿到今天请求,同一套代码同时跑一遍今天的首页当零点。尺子坏过一次:存档站在目标日期没有快照时会跳到最近的任意一份,两个站落到了2017年,必须挑出来剔掉。
标签
保哥笔记 技术SEO 标签下共 50 篇文章合集,含《技术SEO一堆问题先修哪个?500站实测排出来的优先》《Core Web Vitals在AI搜索时代还值不值》《电商SEO最重要的5点:从AI爬虫到accessib》等,与 Core Web Vitals、AI爬虫、结构化数据 主题密切相关,覆盖 SEO/GEO 实战角度的深度解析与可落地方案。
做法是从存档站取回2025年8月那份未经改写的原始HTML,把上面的资源地址按归属分好逐条拿到今天请求,同一套代码同时跑一遍今天的首页当零点。尺子坏过一次:存档站在目标日期没有快照时会跳到最近的任意一份,两个站落到了2017年,必须挑出来剔掉。
把同一件事分别写进HTTP响应头和HTML,再交给真实浏览器裁决:字符编码两个方向各测一次,防嵌套做成六格对照,其中一格同时写了最严的老字段和较松的新指令。另一头拿674份配着响应头的真实页面逐项对账,统计响应头层各字段的实际覆盖率、meta里那些规范根本不承认的写法、以及站点规则文件里各类指令的接收方现状。文中给出三条线的层级顺序、三层规则的方向性、一张按层归位的对照表,以及四条能直接跑的核对命令与一段响应头变更监控脚本。
把188个海外品牌站的首页在两个时间点各抓一次,337份可解析文档、17423条head声明,逐类统计那些语义上本该唯一的字段被写了几遍、值一不一样;再用一个最小的本地服务制造六组典型冲突,交给真实的浏览器内核解析,看它最终采纳了哪一条。文中给出重复率与冲突率的两次快照对照、内页与首页的差距、七类字段各自的裁决方式、被一个div赶出head的三条声明、编码声明写到十几万字节之后为什么仍然没事,以及三档整改优先级和一段能直接接进流水线的检…
从73个多语言站的首页抽出2529条语言版本声明,实抓258个目标页,逐个解析对面自己的清单,按规范要求做集合比对与逐地址标法比对;非正常响应一律换第二种身份重抓一次,把不受接待与真的坏掉分开;跨域目标另做一次平台指纹对照。文中给出集群规模与跨域分布、自指与集合一致率、标法冲突的形态排序、跳转造成的错位比例、按责任方划分的问题清单,以及一套先修自己再推别人的优先级与可直接抄的沟通结构。
做法是用真实浏览器逐页打开55个英文独立站的首页、商品页,再从首页现场找出联系页与账号页,把每个页面上的input、select、textarea连同type、autocomplete、required、pattern、maxlength、inputmode与名字来源一并取下来。同一个站里声明完全相同的控件按签名合并,避免主题挂在每一页的抽屉表单被重复计数;从没可见过又没有任何说明文字的字段单独剔出,因为那多半是跟踪像素注入的参数框。另…
从116个海外品牌独立站的sitemap里各随机抽6条地址做实抓,把提交层、交付层、索引层三处的声明逐条比对。做法是先确认sitemap本身拿得到,再按固定随机种子抽样,一次请求同时取回状态码、跳转链、页面与响应头里的索引声明和canonical,最后对所有非200的地址换普通浏览器身份重抓一次做对照。文中给出一致率、各项失分分布、系统性与零星的分辨方法、六步自查顺序,以及五处差点搞错的判据。
把122个海外品牌站首页上的3102条资源提示逐条拆开,跟页面实际加载的资源域名做差集,再把所有第三方主机拿去做域名解析与请求验活,最后用同一批站在两个时间点的快照比对这块配置动没动。文中给出五种提示类型各自的空转率、重复声明的规模与三种成因、字体预加载缺跨域属性的比例、被指得最多的第三方域各自的空转情况、两次快照的变更率,以及一套先删哪些、哪些要先确认、删完怎么验证的完整操作顺序。
把142个海外品牌独立站首页的最终响应逐字段拆开,按十二种形态归类,再对着规范逐条判它们的下场。做法是先切出跳转链最后一段2xx响应,再按字段名分组找同名重复,然后查缓存、防嵌套、Cookie到期这三对经典冲突,最后把内容安全策略里的关键字逐个过一遍。文中给出各形态的站数分布、平台指纹与自写部分的拆分、六步自查顺序,以及把合并误判成矛盾之后数字从69降到57的修正过程。
把57个英文电商站的19405个分类按建立年份切成五个桶,逐桶交叉商品数、描述长度、题图、sitemap收录与首页导航覆盖这五项指标;再用一组正则按handle的命名把它们分成促销、节日、赠品、联名等类别,跟空置率交叉;接着把分类的年龄与它里面商品的货龄配对,看货架和货哪一头更旧;最后用真实浏览器逐个打开每站最老与最新的分类页,核对状态码、最终地址与robots标记,并把不可靠的读数逐条剔出去。
实验台从60个英文电商站的公开商品清单接口取回43912件在售商品与19405个分类的全部时间字段,再隔10.2小时把同一批站原样复抓一遍做纵向对照,用同一次测量里的另外两个字段当基线,判断哪一个字段真的记录了内容变动。随后按建档年份把商品分桶,逐站配对比较老货与新货在sitemap收录、首页两跳可达、前台是否仍在售三个维度上的差别,最后用真实浏览器逐个核对可疑读数,扣掉地区路由与渲染异常的站点。
把143个站声明的sitemap两层全拉下来,435份文件、41万条地址,逐条解析修改时间字段,再按2小时22分、7分钟、4秒三种间隔各重抓一遍做前后比对;对声称刚刚改过的页面另做一次正文闭环,逐字比对标题、描述、H1与正文词集;最后用两种身份同时请求同一份文件,把测量顺序造成的假差异从身份差异里扣干净。文中给出覆盖率、精度、年龄七档分布、时间戳聚集度、索引层与子文件层的对账结果,一次把尺子量歪的完整复盘,以及一套可以在自己站上一分钟跑…
按RFC 9309从零实现一遍匹配器,再用三种办法把157份robots.txt的合并效果逐条判出来:给每条规则生成一个一定能匹配的代表路径,做删除实验看这条规则删掉之后判定变不变,以及把规则随机洗牌五遍验证顺序到底有没有影响。文中给出撞车率、胜负分布、空转成因分类、三种解析器读法的分歧规模,以及一套五步自查顺序和两次量错口径的完整过程。
做法是把同一批分类从三条独立路径各取一份清单:不用登录就能读的分类出口、站点递给爬虫的sitemap、以及首页渲染后DOM里能点到的链接。sitemap那一份要按语言分卷拆开只取根语言,否则翻译过的handle会被算成另一批;导航那一份不能只抓静态HTML,得用无头浏览器渲染后取并集。空货架的判定不数页面上的商品链接,改用商品清单接口加浏览器里正文区可见的商品卡两条一起看。
量法是每个站的首页连打三次、再各取一个CSS、一个JS、一张图片、一个网站图标和robots.txt,逐个记下全部缓存相关响应头,用Age字段反查谁真的把它存下来过。尺子中途出过两次问题:并发开太高让11个站返回429,差点被读成这些站没数据;以及把不带Age当成没被缓存,而115个站里91个不带Age,其中72个带着CDN自己的命中标记。
做法是拿两个乱码词加一个必然搜得到的词各请求一遍,回答不跟着变的站说明它压根没在搜,整体剔出分母,69个里剔掉了29个。归属靠覆盖率判断:同平台里覆盖率越高的指令,越可能来自出厂模板。
给robots.txt做一次收件人体检的量法:先把字段名去重列出来,多出常规四五种的逐个查谁在读;再比通配组与专属组的条数差;抽三条具体路径实际请求看还在不在;最后把依据和日期写成注释留下。含157份真实文件的逐字段实测、四步自查清单与两种服务端替代写法。
实验台分三层搭:分母取各站公开的商品清单接口并翻页到底,第一跳取首页渲染后DOM里的分类链接(只用静态HTML会漏,gymshark从0变92),第二跳取这些分类各自的商品清单。名次按商品在各分类里的最好位置计,再按每页24、36、50三档分别换算页码,不预设某个站用了哪一档。逐条扣掉地区路由、变体级伪商品、语言分卷重复、翻页截断、导航不走collections路径这五类干扰,60个候选站最后41个进干净口径。
给robots.txt做一次分组体检的完整量法:先数通配组的Disallow条数,再数每个专属组的条数,两边做减法找出被漏掉的路径;接着把不会生效的Crawl-delay、Noindex、Host这类字段清掉;最后用测试工具按地址乘爬虫名做一个小矩阵逐个验证,把结果存下来当回归基线。文中给出157份真实robots.txt的实测数据、三种写法的效果对照表、五步自查清单,以及把平台默认模板接管过来之后要承担什么。
把响应的不成文缺省测出来的完整做法:对同一个地址发三次请求,分别换掉语言偏好、去掉压缩声明、保持原样,再比对最终地址、页面语言标记、标题与正文体积这四项稳定证据;拿到变化维度清单之后逐项去核对Vary头,多了删、少了补。文中给出139个站的实测分布、判据从宽到严导致数字缩水3.8倍的完整过程、五分钟版与半天版两套清单,以及修复该落在哪一层。
把一个页面对自己地址的所有声明抠出来做对齐,这件事有一套可复现的跑法。先取事实,用跟随跳转的请求拿到服务器实际服务的那个地址,别拿你输入的那个当基准;再从原始源码里取出规范网址、og:url、hreflang默认版本、结构化数据里的url这四处声明;然后做分层比对,第一层严格比字符串,第二层忽略末尾斜杠,第三层忽略www,记下它在哪一层变成一致,那一层就是问题的性质;最后比对站点地图,逐字符比。一个页面十分钟,全站按模板抽八到十个就够。