YOURLS 1.10.6 介绍与选型指南
YOURLS 1.10.6 介绍与选型指南:PHP + MySQL 老牌自托管短链服务的定位、架构、功能特性与 Shlink/Chhoto URL/Polr 量化选型对比,全部数据标注来源与查询日期。
YOURLS 1.10.6 介绍与选型指南
> 目标:为「自托管短链接服务」选型提供 YOURLS 的全景认知——它是什么、怎么工作、能做什么、与同类竞品(Shlink / Chhoto URL / Polr)的差异与取舍。本文为认知篇,全部数据来自官方源联网溯源(查询日期均为 2026-10-30,来源在各节标注),不含本机实测。
一、环境信息
- 本文性质:认知与选型篇,仅联网溯源,未做本机部署实验;
- 信息来源:YOURLS 官网 yourls.org、GitHub 仓库 YOURLS/YOURLS(releases.atom、源码包、shields.io 徽章数据)、Docker Hub 官方镜像文档(docker-library/docs);
- 统一查询日期:2026-10-30;
- 关联实测篇目:部署、配置、API 的逐命令实测见本专栏后续篇章(部署篇、配置篇、API 篇)。
二、软件概述
YOURLS(Your Own URL Shortener)是一套 PHP 脚本组成的老牌开源自托管短链接服务,官方定位一句话是「The de facto standard self-hosted URL shortener」(自托管短链接的事实标准,来源:yourls.org 首页,2026-10-30 查询)。项目始于 2009 年(官网页脚版权行「Copyright © 2009-present · YOURLS Contributors」),由 GitHub 用户 ozh(Ozh Richard)与社区共同维护至今,是本文对比的四个短链组件中资历最老的一个。
基础身份信息一览(来源:官网与 GitHub 仓库页,2026-10-30 查询):
| 项目 | 信息 |
|---|---|
| 名称 | YOURLS(Your Own URL Shortener) |
| 官网 / 文档 | https://yourls.org / https://yourls.org/docs/ |
| 代码仓库 | https://github.com/YOURLS/YOURLS |
| 技术栈 | PHP + MySQL/MariaDB |
| 开源许可 | MIT(官网页脚「Code licensed MIT, documentation CC BY 4.0」) |
| 最新稳定版 | 1.10.6(2026-08-30 发布,来源:GitHub releases.atom) |
| 社区热度 | 12k stars / 2.1k forks(来源:shields.io 徽章数据,2026-10-30) |
| 官方镜像 | yourls(Docker Hub 官方镜像,Docker Official Image) |
💡 说明:「Docker Official Image」指由 Docker 官方库(
library/命名空间)审核发布的镜像,docker pull yourls不带用户名前缀即可拉取,安全审计与更新节奏由 Docker 官方 channel 把关,这在自托管 PHP 应用中属于少数派待遇(多数自托管项目只提供作者/项目名形式的普通官方镜像)。
版本节奏方面(来源:releases.atom,2026-10-30 查询),1.10.x 线近期三个版本为:1.10.4(2026-05-23)、1.10.5(2026-08-28)、1.10.6(2026-08-30)。其中 1.10.5 是一次集中安全加固版本,对本系列文档的 API 使用方式有直接影响,要点包括:
- 弃用 md5 的 API 签名与凭据机制,签名哈希改用 sha256/sha384/sha512(默认 sha256),并配合
hash_equals()防时序攻击; - HTTPS 安装启用浏览器侧 cookie 前缀加固,
YOURLS_COOKIEKEY未显式定义时自动生成不可预测值; - 公开(public)实例上限制对私网 IP 地址的远程标题抓取,修复统计页 referrers 的 XSS 隐患(GHSA-5h77-88j3-r659,1.10.4);
- 重复长 URL 被拒绝时的状态码从 400 改为 409 Conflict(本专栏 API 篇已实测验证该行为)。
三、核心架构
YOURLS 是典型的经典 LAMP 形态单体应用:PHP 脚本 + 一个 MySQL/MariaDB 库 + Apache/Nginx 任一 Web 服务器,没有独立常驻进程、没有消息队列、没有额外依赖服务。整个应用就是一组 PHP 文件,部署即「把源码放进 Web 根目录、写一个 config.php、完成安装向导」。
从官方源码包(tag 1.10.6,2026-10-30 下载自 codeload.github.com)的目录结构可以看出它的职责划分:
| 目录/文件 | 职责 |
|---|---|
yourls-go.php | 短链跳转入口:按 keyword 查库并 301 重定向到长 URL |
yourls-api.php | REST API 入口:接收 action 参数分发到内置 API 函数 |
yourls-infos.php | 短链统计页:展示某条短链的点击详情 |
admin/ | 管理后台:安装向导、登录、短链管理、插件管理、工具页 |
includes/ | 核心函数库:认证、短链 CRUD、API、插件机制、选项存储等 |
user/ | 用户定制层:config.php、plugins/、pages/、languages/ 都在这里 |
💡 技术拓展:短链跳转的 HTTP 语义不止 301 一种。301 是永久重定向,浏览器与搜索引擎会缓存结果、权重转移到目标地址;302/307 是临时重定向,每次都会回源。YOURLS 实测(见本专栏部署篇)对跳转返回的是 301,配合
X-Robots-Tag: noindex响应头防止短链页被搜索引擎收录。选型时若你更在意「点击统计的完整性」(浏览器缓存 301 后可能绕过统计),需要关注这一默认行为的取舍。
数据模型极为简洁,核心只有三张表(yourls_ 为可配置前缀,来源:1.10.6 源码与安装向导实测回显):
yourls_url:短链主表,字段keyword(主键,即短码)、url(长链)、title、timestamp、ip(创建者 IP)、clicks(点击计数);yourls_options:键值配置存储;yourls_log:点击明细日志(用于历史点击报表)。
💡 技术拓展:短码(keyword)的生成策略各产品不同。YOURLS 默认把自增 ID 做 36 进制(纯小写字母数字)或 62 进制(区分大小写)编码,因此自动生成的短码是顺序的(第一个是 1,然后 2、3…);用户也可以在创建时手工指定可读短码(如
quzuo)。而 Shlink 等产品默认生成随机短码。顺序短码可读性好、可预估,但短码可枚举;随机短码防枚举性更好。YOURLS 通过YOURLS_URL_CONVERT(36/62)与保留字列表$yourls_reserved_URL控制这一行为,详见本专栏配置篇。
四、功能特性
以下特性均可在官方文档(yourls.org/docs)与源码中对应验证(2026-10-30):
- 短链创建与 301 跳转:支持自定义 keyword、批量场景走 API;跳转入口按 keyword 查库重定向;
- 点击统计与地理分析:每条短链的点击数、历史点击报告、来源 referrers 追踪、访客地理位置(官网首页「awesome stats with historical click reports, referrers tracking and visitors geo-location」);
- REST API:内置 API 入口
yourls-api.php,源码实查共 6 个内置 action——shorturl(创建)、stats(最近/最热列表)、db-stats(全局统计)、url-stats(单链统计)、expand(还原长链)、version(版本号); - 私密/公开两种模式:
YOURLS_PRIVATE开关决定管理区是否需要登录、API 是否需要凭据(官网「Private means the Admin area will be protected with login/pass」); - 插件架构:官网「Terrific plugin architecture and dozens of plugins」,插件放入
user/plugins/目录在后台激活即可,官方还维护了精选列表(yourls.org/awesome,即 awesome-yourls); - 书签工具(Bookmarklets)与即时跳转:后台工具页提供一键缩短书签、
yourls-infos.php即时统计入口; - 多语言:翻译文件放
user/languages/,YOURLS_LANG启用(1.10.4 起日期时间显示也支持本地化); - 多账号:
$yourls_user_passwords数组支持多个登录账号,密码支持明文(自动加密)或加密哈希。
同样重要的是它「没有」什么(选型时容易踩坑的点,来源:源码 functions-api.php 实查):
- 内置 API 没有编辑与删除短链的 action——这两类操作只能走管理后台 UI 或装社区插件;
- 没有多租户/团队协作体系,所有登录账号共享同一个短链库;
- 没有自带水平扩展方案,高可用靠「PHP 无状态 + 共享同一个 MySQL」这一经典 Web 架构自行展开。
五、快速开始(最小可用示例)
以下为官方 README 与 Docker 官方镜像文档给出的最小启动路径(来源:github.com/YOURLS/YOURLS README 与 docker-library/docs/yourls,2026-10-30;本文档不做实测,逐命令实测与完整回显见本专栏部署篇):
- 准备一台装好 Docker 的主机与一个空 MySQL 库(或使用 compose 一起拉起 MySQL);
- 最小
docker run形态(官方镜像文档原文,凭证替换为自己的值):
docker run \
--name some-yourls \
--detach \
--network some-network \
--env YOURLS_SITE="https://example.com" \
--env YOURLS_USER="example_username" \
--env YOURLS_PASS="example_password" \
yourls
- 浏览器访问
http://<主机>:<端口>/admin/完成安装向导(首次访问根路径会 403,官方镜像文档明确注明「reaching the root folder will generate an error. Access the YOURLS administration interface via the path /admin/」); - 在后台 Tools 页取得 Secret signature token,即可开始调用 API 创建短链。
完整的双服务编排(YOURLS + MySQL)、数据持久化与验证回显,见本专栏部署篇。
六、适用场景与限制
适用场景:
- 个人或小团队的域名短链服务:想要短码完全自主可控、数据在自己库里;
- 已有 LAMP 运维体系的环境:YOURLS 与既有 PHP + MySQL 运维经验完全同构,无新组件引入;
- 需要插件定制的场景:经典 PHP 插件机制门槛低,社区插件生态成熟;
- 对点击统计有报表诉求但不需要重量级分析平台的场景。
限制与边界(来源:官方文档与源码结构,2026-10-30):
- 依赖 MySQL/MariaDB:不像 Shlink(支持 SQLite/PostgreSQL)与 Chhoto URL(SQLite)那样数据库可选,也不支持嵌入式零依赖部署;
- PHP 版本要求 ^8.1(来源:源码 composer.json
"php": "^8.1"实查); - 单体单库,无内置分片/集群概念;
- API 能力面窄(6 个 action,无编辑/删除),复杂自动化要靠插件补齐;
- 界面与交互停留在「经典工具」风格,功能完整但现代感有限——这也是它 17 年历史的一体两面。
七、同类选型对比
自托管短链赛道的主流开源产品对比如下(数据来源:各项目 GitHub releases.atom 与 shields.io,查询日期 2026-10-30;Shlink 与 Chhoto URL 的深度实测见站内专栏 《Shlink 5.1.8 介绍与选型指南》 与 《Chhoto URL 介绍与选型指南》):
| 维度 | YOURLS 1.10.6 | Shlink 5.1.8 | Chhoto URL 7.10.3 | Polr 2.3.0 |
|---|---|---|---|---|
| 技术栈 | PHP + MySQL | PHP + Slim + Doctrine | Rust(Actix)+ SQLite | PHP(Laravel 风格)+ MySQL |
| 数据库选择 | 仅 MySQL/MariaDB | SQLite / MySQL / PostgreSQL | 仅 SQLite(单文件) | 仅 MySQL/MariaDB |
| 最新版本与发布 | 1.10.6(2026-08-30) | 5.1.8(2026 年,活跃) | 7.10.3(活跃) | 2.3.0(长期停留在该版本) |
| GitHub 星数 | 12k | 5.4k | 轻量新锐(见站内专栏) | 5.1k |
| 许可证 | MIT | MIT | MIT | GPL |
| REST API | 内置 6 action(只读+创建) | 完整 REST(含 CRUD、标签、域名管理)+ CLI | 内置 REST + API Key | 内置 API(基础) |
| 插件/扩展机制 | 经典 PHP 插件架构(17 年沉淀) | 无插件体系(内置功能全) | 无(极简主义) | 无 |
| 管理后台 | 内置经典后台 | 内置现代后台 + REST 驱动 | 内置单页极简后台 | 内置后台 |
| 点击统计 | 点击数/历史报告/referrers/地理 | 点击数/referrers/地理/UA 等 | 点击计数 + 简短统计 | 基础统计 |
| 部署形态 | LAMP / 官方 Docker 镜像 | 官方 Docker 镜像 / PHP 部署 | 单二进制 / Docker | LAMP |
| 资源画像 | 经典 PHP 应用,资源占用低 | 中等 | 极低(单二进制几 MB) | 低 |
关键差异与选型解读:
- 要「事实标准 + 插件生态 + 17 年不倒」:YOURLS。它的社区规模(12k stars)与历史纵深(2009 年至今)在短链赛道无可替代,遇到问题几乎都能搜到答案;
- 要「完整 API + 现代工程化」:Shlink(站内实测见 《Shlink 5.1.8 REST API 与 CLI 命令详解》),它的 API 是 CRUD 全集且带 CLI 工具,适合把短链当「基础设施」做自动化集成——而 YOURLS 内置 API 仅覆盖「创建 + 各类查询」六个 action、无编辑与删除能力(实测详见 《YOURLS 1.10.6 API 使用详解》);
- 要「极轻量、单二进制、低配设备」:Chhoto URL,Rust + SQLite 单文件,NAS/小鸡友好(站内实测见 《Chhoto URL 7.10.3 Docker Compose 部署指南》);
- 不建议新项目再选 Polr:功能与 YOURLS 同代,但版本长期停滞(最新 release 仍为 2.3.0),社区活跃度已被 YOURLS/Shlink 双双超越;
- 依赖链取舍是分水岭:环境里只有 MySQL 且熟悉 PHP 运维 → YOURLS 顺手;想用 PostgreSQL/SQLite → 直接排除 YOURLS 与 Polr。
八、参考链接
- 官网:https://yourls.org
- 官方文档:https://yourls.org/docs/
- GitHub 仓库:https://github.com/YOURLS/YOURLS
- Releases(版本来源):https://github.com/YOURLS/YOURLS/releases
- Docker 官方镜像文档:https://hub.docker.com/_/yourls
- 1.10.5 发布公告(安全加固明细):https://yourls.org/blog/2026/08/24/yourls-1-10-5
- 站内关联:《Shlink 5.1.8 介绍与选型指南》、《Chhoto URL 介绍与选型指南》