rel="license"必须指向版权许可协议全文,仅用于或<link>元素且目标需为可读许可证文本,不可用于作者页或GitHub链接;优先用<link>声明整页许可,用于局部标注。

rel="license" 的标准写法和语义要求
HTML 中 rel="license" 不是随便加在任意链接上的装饰性属性,它有明确的语义约束:必须用在指向当前页面或内容**版权许可协议文本**的 <a> 或 <link> 元素上,且目标资源需是机器可读或人类可读的许可证全文(如 CC BY 4.0、MIT License 文本页),不能是主页、作者页或模糊的“关于”页。
常见错误是把 rel="license" 加在作者链接或项目 GitHub 地址上——这违反 HTML 规范,浏览器和爬虫不会将其识别为许可声明。
-
<a href="https://creativecommons.org/licenses/by/4.0/" rel="license">CC BY 4.0</a>✅ 正确:链接指向许可证官方文本页 -
<link rel="license" href="/LICENSE.txt">✅ 正确(放在<head>中):指向本地纯文本许可证文件 -
<a href="https://example.com/about" rel="license">About</a>❌ 错误:页面不包含许可证全文 -
<a href="https://github.com/user/repo" rel="license">Source</a>❌ 错误:GitHub 仓库页本身不是许可证文本
使用 <link> 还是 <a>?场景怎么选
两者语义一致,但适用位置和可访问性不同:<link> 必须放在 <head>,对用户不可见,适合声明整页内容的默认许可;<a> 放在正文,可见且可交互,适合标注某一段落、图片或数据集的独立许可。
如果整个网页内容统一采用 MIT License,优先用 <link>;如果页面里混用多种许可(比如正文是 CC BY,插图单独声明 CC0),就必须用多个 <a rel="license"> 分别标注。
立即学习“前端免费学习笔记(深入)”;
-
<link rel="license" href="/LICENSE">:简洁、无干扰,适合静态站点首页或文档页 -
<p>图表数据遵循 <a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="license">CC0 1.0</a></p>:明确归属,便于读者快速理解局部许可范围 - 不要在同一个资源上重复声明——一个
href对应一个rel="license"即可,多加无意义
href 指向 LICENSE 文件时的路径和格式注意点
本地 LICENSE 文件路径必须可公开访问,且内容应为纯文本或 HTML 格式的完整许可证原文。常见陷阱是路径 404、返回 HTML 页面但没包含许可证正文、或返回 Markdown 源码(爬虫无法解析)。
- 推荐文件名:
LICENSE(无扩展名)、LICENSE.txt或license.html,避免README.md—— 它不是有效许可证载体 - 确保服务器返回正确的 MIME 类型:
text/plain(.txt)或text/html(.html),否则<link>可能被忽略 - 如果用
<link rel="license">,建议同时在页面底部加一个可见的<a rel="license">链接,兼顾 SEO 和无障碍访问
Microdata 或 RDFa 还需要额外标记吗
单纯用 rel="license" 已满足基本语义需求,主流搜索引擎和许可检测工具(如 Creative Commons Validator)都能识别。只有在需要精确描述许可范围(例如“仅限非商业用途”或“允许修改”)时,才需配合 schema:license 或 cc:license 等 RDFa 属性。
日常博客、文档页、开源项目主页,rel="license" + 正确 href 就够了。过度添加结构化数据反而容易出错,且目前几乎没有工具依赖那些扩展字段。
- ✅ 足够:
<a href="https://spdx.org/licenses/MIT.html" rel="license">MIT License</a> - ⚠️ 不必要:
<a property="schema:license" href="..." rel="license">—— 除非你主动集成特定知识图谱系统 - 注意 SPDX URL(如
https://spdx.org/licenses/MIT.html)比简短别名(如MIT)更可靠,后者可能被解析失败



















