18 10 月 2026
推广链接又长又丑还带追踪参数?第三方短链服务说不准哪天关停、限流、往你的链接里插广告。Shlink 是一个 PHP 写的自托管短链程序:数据在自己库里、带访问统计、有 API、有二维码,1核1G 就能跑。

一、短链能干嘛,不止是"变短"

场景怎么用
推广渠道一个落地页配多个短链(/wx、/wb、/dy),各渠道效果分开统计
线下物料海报/名片印短链,好看且后期可改指向(印刷品发出去还能换目标页)
内部系统长后台链接变短,邮件/微信里不发一屏乱码
API 集成程序里自动生成短链 + 二维码,Shlink 的 REST API 很完整

自托管 vs 第三方的核心差别:第三方说停就停(历史上倒闭过好几家),你的链全变死链;自托管的链,只要服务器在就永远有效。

二、部署:PHP + SQLite 最轻姿势

Shlink 支持 SQLite(零依赖)和 MySQL/Postgres/MariaDB。个人用 SQLite 就够,省一个数据库进程。

1. 环境:Nginx + PHP 8.1+,扩展需要 pdo_sqlite(或 pdo_mysql)、json、intl、gd。

2. 安装:

cd /www/wwwroot
curl -sSL https://shlink.io/install | php
# 交互式安装:选 SQLite、设主域名,完成后生成 API Key

或者用 Docker(省得配 PHP):

services:
  shlink:
    image: shlinkio/shlink:stable
    restart: unless-stopped
    ports: ["8080:8080"]
    environment:
      DEFAULT_DOMAIN: s.yourdomain.com
      IS_HTTPS_ENABLED: "true"
      GEOLITE_LICENSE_KEY: 你的key   # 可选:访客地域统计
    volumes:
      - ./shlink-data:/etc/shlink/data

3. Nginx 反代:

server {
    listen 443 ssl;
    server_name s.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

证书见免费 SSL 证书申请与 HTTPS 部署,反通用配置见Nginx 反向代理与多站点配置。

三、创建短链:CLI 和 API

CLI 建链:

# 生成一个随机短码
./vendor/bin/shlink short-url generate https://z0w.cn/wiki/

# 指定自定义短码
./vendor/bin/shlink short-url generate https://z0w.cn/wiki/ --slug wiki

# 带标签,方便按渠道统计
./vendor/bin/shlink short-url generate https://z0w.cn/ --tags weibo,q3

API 建链(程序里用):

curl -X POST https://s.yourdomain.com/rest/v3/short-urls \
  -H "X-Api-Key: 你的API-KEY" \
  -H "Content-Type: application/json" \
  -d '{"longUrl": "https://z0w.cn/wiki/", "tags": ["api"]}'

301 vs 302 的选择(重要,影响 SEO):

  • 302(临时跳转):默认推荐。搜索引擎把权重算给目标页,不传递短链域名的权重——推广场景用这个
  • 301(永久跳转):权重传递给目标页,适合"这个短链就是永久地址"的场景

四、统计:每个链带来了多少人

Shlink 每个短链都带访问统计:总点击、独立访客、Referer 来源、浏览器/系统、时段分布。配了 GeoLite 授权码还能看访客地域。

用法示例:公众号发一篇推文,文末放 s.你的域名/wx,朋友圈放 s.你的域名/pyq,一周后看两个标签的点击对比——哪个渠道值得投,数据说了算。渠道分析方法论见网站统计与访客分析。

五、运维三件事

  1. 备份:SQLite 就一个文件,每天 rsync 异地一份,方案见rsync 同步与定时备份。丢库 = 丢全部短链映射,且无法从目标页反推
  2. 防滥用:公开注册的短链服务会被用来做钓鱼/博彩跳板。Shlink 默认只允许 API Key 建链,别开公开创建;服务器防火墙按服务器端口安全:最小化开放收口
  3. 短码规范:自定义短码用易记的单词(/wiki、/sale),随机码用默认长度;建完的链不要随便删——外面可能已经印出去了

六、进阶玩法

  • 二维码 API:Shlink 每个短链直接访问 短链?qr 或调 REST API 生成二维码,海报物料一键配套
  • 按设备跳转:配合 Nginx 按 User-Agent 分流,iOS 跳 App Store、安卓跳应用宝(需自己写一层)
  • CLI 脚本化:推广活动批量建链、批量打标签,全走 CLI,五分钟建一百个

结语

短链是个"小而美"的自托管项目:技术简单、价值明确、数据自主。对做推广的人,能按渠道拆解的点击数据,比短链本身更值钱——这是第三方服务给不了你的粒度。

需要搭短链服务器,可以看看财富云计算:NAT 型云服务器支持 443 映射,1核1G 跑 Shlink 毫无压力,SSD + 快照 + 每日备份,价格比独立 IP 机型省一半以上——短链这种轻量常驻服务,用 NAT 型最划算。

延伸阅读
  1. 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
  2. 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
  3. 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
  4. 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
  5. 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
  6. RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
  7. 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道
  8. 自托管密码管理:Vaultwarden 部署实战,把全家的密码管起来
更多阅读
  1. 上一篇:网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道
  2. 下一篇:RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
发表评论 1