规则没有生效,为什么两边都当成通过了
我在两行 robots.txt 里调换顺序,urllib 的结果当场反转。把 34 KiB 的 AGENTS.md 喂给 Codex,文件后半截的测试标记变成 0 命中,终端没有报错。声明式规则解析失败时不会停下,只会假装规则不存在。219 次运行全部以退出码 0 结束,先确认是哪个解析器给的判定。
标签
20篇文章
我在两行 robots.txt 里调换顺序,urllib 的结果当场反转。把 34 KiB 的 AGENTS.md 喂给 Codex,文件后半截的测试标记变成 0 命中,终端没有报错。声明式规则解析失败时不会停下,只会假装规则不存在。219 次运行全部以退出码 0 结束,先确认是哪个解析器给的判定。
把同一句提示做成七种 tooltip,分别量 WCAG 2.2 SC 1.4.13 的 Dismissible、Hoverable、Persistent。纯 CSS 的三种全部倒在 Dismissible 上,popover="hint" 白送你 Dismissible,却在 Hoverable 上翻车。
装上 Chrome 团队的 Modern Web Guidance 0.0.180,按分类数完 138 篇指南,再用三个领域 22 条查询去戳检索。首位相似度:UI 0.643,无障碍 0.508,结构化数据 0.267,另有 2 条完全没有返回。语料库空出来的地方怎么用项目规约补上,这篇一并写清楚。
我从自己站点的构建产物里取出 69 句话,做成文本片段链接,在 Chromium 里逐条点开记录落点。48 句散文全部到达,15 段代码里有 14 段断在半路。本文用实测把块边界和词边界的规则讲清楚。
axe-core 给 WCAG 1.4.12 判了零违规。可当我真的把这条标准要求的四个值加上去,570 个元素的文字被切断了。这篇把四条声明拆开逐个测,看谁才是丢内容的那一个。
W3C ACT 公开了 1,213 个带人工标注的测试用例。把 axe-core 全量跑一遍,387 个「应该失败」的用例里只有 145 个(37.5%)报出了对应成功标准的违规,36 条标准中有 22 条挂零,而这些沉默里有一部分只是规则默认没开。
给去年写的文章发了个 curl,Last-Modified 显示的却是昨天的部署时间。拆开 ETag 一看,就是文件修改时间和大小拼成的十六进制。同一份源码重新构建出的 1,346 个 HTML 完全字节一致,可一次部署就让整站的条件请求全部落空,本该拿到的 304 再也换不回来。文中给出实测过程与几种可行的缓解方案。
W3C 于 7 月 23 日以 Group Note 形式发布 WCAG-EM 2.0。我照着文档的抽样流程挑出 26 个页面,又把同一次构建的 1,342 个页面全部用 axe-core 扫了一遍做对照。抽样只抓到 4 类违规中的 1 类,而随机样本给出新发现的概率只有 0.29%,几乎等于没有。
一篇文章的标题会在 title、h1、og:title、headline、RSS 等六处被声明,1,296 篇全部一致。真正出问题的是第七处:指向文章的 18,296 条内部链接里,锚文本与目标标题完全一致的只有 0.7%,根源是包住整张卡片的那一个 a 标签。本文给出七个渠道的实测数据与可照做的修复路径。
本来是为测量链接文本的无障碍指标写的脚本,结果挖出一个URL缺陷。对构建产物中1,334个HTML页面的内部链接做全量扫描,超过一半的24,948条指向不带尾部斜杠的地址,也就是要走一次301跳转。本文记录成因、四个阶段的修复,以及把它清到零的过程。
每篇文章都挂着中位数8条内链,我以为内链已经够了。对1,330个构建产物页做广度优先遍历后,1,288篇文章中有1,276篇位于深度2。可是一旦把四个语言的列表页从链接图里拿掉,296篇从首页再也走不到。相关文章模块再多,也替代不了四个语言列表页这个入口。从首页出发时,四个列表页才是通往深度2的门。
把同一张营业时间表用四种标记方式写出来,分别过 axe-core 和五个抽取器。axe 对四种都给出零违规,可一旦把 HTML 还原成 Markdown 或纯文本,其中三种只能复原 0/7 行。role="table" 到底在哪一层帮不上忙,这里用实测日志说清楚。
把同一个 Product 实体用三种语法各写一遍,喂进解析器,实测字节数和易碎程度。Google 三者同等对待。那么推荐 JSON-LD 的真正理由不是排名,而是能在改版中活下来的耦合度。用官方文档和可复现日志梳理出的选型标准。
给首页加上 priority 1.0 和 changefreq always,Google 全部丢弃。官方文档只用一个字段——lastmod,而且只在它可验证地准确时才用。我用官方 XSD 实际跑了三种 sitemap,看清什么通过校验、什么被悄悄忽略。
我把一个 AI 生成的预订组件分别用 axe-core 跑在 jsdom 和真实浏览器里。四条结构性违规不用浏览器就被抓住,唯独 color-contrast 在 jsdom 里落到了 incomplete。这篇讲清楚原因,以及如何把 CI 流水线拆成两层、让覆盖率的洞不再出现,附带真实日志。
对我的四语言博客做了五天实测审计。relatedPosts的404有12个、hreflang断链4对、渲染阻塞的字体CSS 405KB、翻译漂移21处、碎片化JSON-LD 7块。全都修了。但真正的成果是让它们再也回不来的构建门禁。附实测日志与检查器代码。
把自己页面的 JSON-LD 丢进校验工具,结果散成了三座孤岛。本文用 @id 节点引用把 Organization、WebSite、Article 拧进一个 @graph,并用 jsonld 实测连通性:三个分量如何合并成一个,以及 Google 不保证的地方。
我把一个30行的检查器直接跑在自己网站的构建产物上。248篇博客文章的hreflang集群全部通过,唯独首页没过。本文梳理Google官方的相互链接规则、实测日志、三种实现方式的对比,以及开发者可以直接套用的修复代码。
很多站点用一行屏蔽 GPTBot 就以为"AI 已挡住"。我实际写了一份把训练、搜索、用户请求爬虫分开控制的 robots.txt,并用标准解析器验证。还包括 Google-Extended 挡不住 AI Overviews 的陷阱,以及 llms.txt 的真实现状。
用JS注入店铺页的LocalBusiness JSON-LD,原始HTML里ld+json块为0。本文与服务端输出直接对比,并梳理Google官方立场与排名的边界。