YOURLS 1.10.6 介绍与选型指南

YOURLS 1.10.6 介绍与选型指南:PHP + MySQL 老牌自托管短链服务的定位、架构、功能特性与 Shlink/Chhoto URL/Polr 量化选型对比,全部数据标注来源与查询日期。

YOURLSYOURLS自托管PHP2026/10/30

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.phpREST 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):

  1. 短链创建与 301 跳转:支持自定义 keyword、批量场景走 API;跳转入口按 keyword 查库重定向;
  2. 点击统计与地理分析:每条短链的点击数、历史点击报告、来源 referrers 追踪、访客地理位置(官网首页「awesome stats with historical click reports, referrers tracking and visitors geo-location」);
  3. REST API:内置 API 入口 yourls-api.php,源码实查共 6 个内置 action——shorturl(创建)、stats(最近/最热列表)、db-stats(全局统计)、url-stats(单链统计)、expand(还原长链)、version(版本号);
  4. 私密/公开两种模式:YOURLS_PRIVATE 开关决定管理区是否需要登录、API 是否需要凭据(官网「Private means the Admin area will be protected with login/pass」);
  5. 插件架构:官网「Terrific plugin architecture and dozens of plugins」,插件放入 user/plugins/ 目录在后台激活即可,官方还维护了精选列表(yourls.org/awesome,即 awesome-yourls);
  6. 书签工具(Bookmarklets)与即时跳转:后台工具页提供一键缩短书签、yourls-infos.php 即时统计入口;
  7. 多语言:翻译文件放 user/languages/,YOURLS_LANG 启用(1.10.4 起日期时间显示也支持本地化);
  8. 多账号:$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;本文档不做实测,逐命令实测与完整回显见本专栏部署篇):

  1. 准备一台装好 Docker 的主机与一个空 MySQL 库(或使用 compose 一起拉起 MySQL);
  2. 最小 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
  1. 浏览器访问 http://<主机>:<端口>/admin/ 完成安装向导(首次访问根路径会 403,官方镜像文档明确注明「reaching the root folder will generate an error. Access the YOURLS administration interface via the path /admin/」);
  2. 在后台 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.6Shlink 5.1.8Chhoto URL 7.10.3Polr 2.3.0
技术栈PHP + MySQLPHP + Slim + DoctrineRust(Actix)+ SQLitePHP(Laravel 风格)+ MySQL
数据库选择仅 MySQL/MariaDBSQLite / MySQL / PostgreSQL仅 SQLite(单文件)仅 MySQL/MariaDB
最新版本与发布1.10.6(2026-08-30)5.1.8(2026 年,活跃)7.10.3(活跃)2.3.0(长期停留在该版本)
GitHub 星数12k5.4k轻量新锐(见站内专栏)5.1k
许可证MITMITMITGPL
REST API内置 6 action(只读+创建)完整 REST(含 CRUD、标签、域名管理)+ CLI内置 REST + API Key内置 API(基础)
插件/扩展机制经典 PHP 插件架构(17 年沉淀)无插件体系(内置功能全)无(极简主义)无
管理后台内置经典后台内置现代后台 + REST 驱动内置单页极简后台内置后台
点击统计点击数/历史报告/referrers/地理点击数/referrers/地理/UA 等点击计数 + 简短统计基础统计
部署形态LAMP / 官方 Docker 镜像官方 Docker 镜像 / PHP 部署单二进制 / DockerLAMP
资源画像经典 PHP 应用,资源占用低中等极低(单二进制几 MB)低

关键差异与选型解读:

  1. 要「事实标准 + 插件生态 + 17 年不倒」:YOURLS。它的社区规模(12k stars)与历史纵深(2009 年至今)在短链赛道无可替代,遇到问题几乎都能搜到答案;
  2. 要「完整 API + 现代工程化」:Shlink(站内实测见 《Shlink 5.1.8 REST API 与 CLI 命令详解》),它的 API 是 CRUD 全集且带 CLI 工具,适合把短链当「基础设施」做自动化集成——而 YOURLS 内置 API 仅覆盖「创建 + 各类查询」六个 action、无编辑与删除能力(实测详见 《YOURLS 1.10.6 API 使用详解》);
  3. 要「极轻量、单二进制、低配设备」:Chhoto URL,Rust + SQLite 单文件,NAS/小鸡友好(站内实测见 《Chhoto URL 7.10.3 Docker Compose 部署指南》);
  4. 不建议新项目再选 Polr:功能与 YOURLS 同代,但版本长期停滞(最新 release 仍为 2.3.0),社区活跃度已被 YOURLS/Shlink 双双超越;
  5. 依赖链取舍是分水岭:环境里只有 MySQL 且熟悉 PHP 运维 → YOURLS 顺手;想用 PostgreSQL/SQLite → 直接排除 YOURLS 与 Polr。

八、参考链接