YOURLS

🔗 The 𝘥𝘦 𝘧𝘢𝘤𝘵𝘰 standard, self hosted, powerful and customizable, URL shortener in PHP

YOURLS

项目简介

在互联网时代,链接无处不在。但你是否遇到过这种情况:一个冗长的网址,在社交媒体上分享时既占地方又不美观;或者,你想追踪某个推广链接的点击量,却苦于没有合适的工具。市面上虽然有 Bitly、TinyURL 等短链接服务,但它们都是第三方平台,你的数据掌握在别人手里,一旦服务商关闭或更改政策,所有链接都可能失效。

YOURLS 正是为解决这些问题而生。它是一个开源的、自托管的 URL 缩短器,全称是 Your Own URL Shortener。简单来说,你可以在自己的服务器上搭建一个完全属于你的短链接系统,所有数据、统计信息都在你自己的掌控之中。

核心功能与架构

YOURLS 的核心功能远不止“缩短链接”这么简单。它更像是一个轻量级的链接管理平台,为你提供了从生成到分析的一整套工具。

核心功能一览

  • 一键缩短与自定义关键词:这是最基础的功能。你可以将任意长链接缩短为 https://你的域名/abc 这样的短链接。更棒的是,你可以自定义后面的关键词(例如 https://你的域名/my-campaign),让链接更具可读性和品牌感。
  • 详细的点击统计:每一个生成的短链接,YOURLS 都会记录其点击次数、来源(Referrer)、用户使用的浏览器、操作系统以及访问的 IP 地址。这对于分析营销活动效果、了解用户行为非常有价值。
  • 强大的插件系统:这是 YOURLS 的灵魂所在。社区贡献了大量的插件,可以实现诸如:集成 Google Analytics、自动将链接发布到 Twitter、开放注册、支持 REST API 等高级功能。你可以通过插件将 YOURLS 变成任何你想要的样子。
  • 公开或私有部署:你可以将 YOURLS 设置为完全私有,只有你自己能创建和管理链接;也可以开放给特定用户(例如团队成员)甚至公众使用,每个人都可以创建自己的短链接。
  • REST API:YOURLS 提供了完整的 RESTful API,这意味着你可以通过编程方式(例如用 Python、JavaScript 或命令行)来创建、删除、查询链接,轻松将其集成到你的工作流或应用中。

架构原理

YOURLS 采用经典的 LAMP(Linux + Apache + MySQL + PHP)架构,也支持 Nginx。它的工作流程非常清晰:

  1. 用户请求:用户在浏览器中输入短链接(如 https://你的域名/abc)。
  2. 服务器处理:请求到达你的 Web 服务器(Apache/Nginx),服务器将请求交给 PHP 脚本处理。
  3. 数据库查询:PHP 脚本在 MySQL 数据库中查找关键词 abc 对应的原始长链接。
  4. 重定向:如果找到,服务器会向浏览器发送一个 301(永久重定向)或 302(临时重定向)的 HTTP 响应,将用户引导至原始长链接。同时,这次点击的统计信息会被记录到数据库中。
  5. 统计更新:数据库中的点击计数器 +1,并记录下这次请求的来源、时间、用户代理等信息。

这种架构的好处是简单、稳定、易于扩展。你只需要一个支持 PHP 和 MySQL 的虚拟主机或 VPS 就能运行它。

快速上手

部署 YOURLS 非常简单,即使你只有基础的服务器知识。以下是两种最常用的方法。

方法一:手动安装(推荐)

这是最灵活的方式,适合熟悉服务器管理的用户。你需要一个 Web 服务器(Apache 或 Nginx)、PHP(7.4 或更高版本)和 MySQL(5.0 或更高版本)。

  1. 下载 YOURLS
    GitHub Releases 下载最新的稳定版压缩包,或者使用 Git 克隆:
    bash git clone https://github.com/YOURLS/YOURLS.git cd YOURLS

  2. 配置数据库
    在 MySQL 中创建一个新的数据库和用户(例如数据库名 yourls,用户名 yourls_user,密码 your_password)。

  3. 配置 YOURLS
    复制配置文件模板并编辑:
    bash cp user/config-sample.php user/config.php
    打开 user/config.php,修改以下关键配置项:
    ```php
    /* MySQL 数据库名 /
    define( 'YOURLS_DB_NAME', 'yourls' );

    /* MySQL 数据库用户名 /
    define( 'YOURLS_DB_USER', 'yourls_user' );

    /* MySQL 数据库密码 /
    define( 'YOURLS_DB_PASS', 'your_password' );

    /* MySQL 数据库主机 /
    define( 'YOURLS_DB_HOST', 'localhost' );

    /* 你的网站域名(不要带 http://) /
    define( 'YOURLS_SITE', 'https://s.yourdomain.com' );

    /* 管理员用户名和密码(用于登录后台) /
    $yourls_user_passwords = array(
    'admin' => 'your_admin_password',
    // 可以添加更多用户
    );

    /* 是否允许公开创建短链接(true 或 false) /
    define( 'YOURLS_PRIVATE', true );
    ```

  4. 设置 Web 服务器
    对于 Apache,确保启用了 mod_rewrite,YOURLS 自带的 .htaccess 文件会自动处理 URL 重写。
    对于 Nginx,你需要在站点配置中添加重写规则:
    nginx location / { try_files $uri $uri/ /yourls-loader.php?$args; }

  5. 运行安装脚本
    在浏览器中访问 https://你的域名/admin/,系统会自动检测配置并引导你完成安装。安装完成后,你就可以用 admin 用户登录后台了。

方法二:使用 Docker(更简单)

如果你熟悉 Docker,这是最快的方法。官方提供了 Docker 镜像。

  1. 创建 docker-compose.yml 文件
    ```yaml
    version: '3.8'

    services:
    db:
    image: mysql:5.7
    volumes:
    - db_data:/var/lib/mysql
    environment:
    MYSQL_ROOT_PASSWORD: root_password
    MYSQL_DATABASE: yourls
    MYSQL_USER: yourls
    MYSQL_PASSWORD: yourls_password

    yourls:
    image: yourls:latest
    ports:
    - "8080:80"
    environment:
    YOURLS_DB_HOST: db
    YOURLS_DB_USER: yourls
    YOURLS_DB_PASS: yourls_password
    YOURLS_DB_NAME: yourls
    YOURLS_SITE: http://localhost:8080
    YOURLS_USER: admin
    YOURLS_PASS: your_admin_password
    depends_on:
    - db

    volumes:
    db_data:
    ```

  2. 启动服务
    bash docker-compose up -d

  3. 访问后台
    打开浏览器,访问 http://localhost:8080/admin/,使用你设置的用户名和密码登录。

使用场景

YOURLS 不仅仅是一个玩具,它在很多实际场景中都能发挥巨大作用。

场景一:品牌营销与追踪

假设你是一家电商公司的市场运营。你需要为即将到来的“双十一”活动创建多个推广链接,分别投放在不同的渠道(如微博、微信公众号、邮件营销)。你希望:

  • 链接短小精悍,方便记忆和分享。
  • 链接中包含品牌名,例如 https://s.yourbrand.com/1111-weibo
  • 能够精确统计每个渠道带来了多少点击。

YOURLS 可以完美满足这些需求。你可以在后台为每个渠道创建自定义短链接,然后通过其内置的统计面板或 API 导出数据,轻松分析各渠道的转化效果。

场景二:团队协作与内部链接管理

如果你的团队经常需要分享内部文档、知识库、开发环境或监控面板的链接,这些链接

项目信息

项目
仓库 YOURLS/YOURLS
语言 PHP
Star 12,047
Fork 2,072
主页 https://yourls.org

参考链接