YOURLS是Your Own URL Shortener,是一个非常强大的短链接平台。

官网地址:http://yourls.org

  • 基于 PHP 的免费开源短链接平台
  • 点击历史和频次统计、推介跟踪、访客地理位置等等
  • 有丰富的插件架构,可以更好地拓展功能
  • 方便的 API
  • 支持跨域访问
  • 安装配置方便

安装

手动安装

  • 从 Yourls 的 GitHub 主页 https://github.com/YOURLS/YOURLS/releases下载最新版包;
  • 复制 /user/config-sample.php 到同目录下并改名为 config.php;
  • 打开 config.php,根据个人情况进行数据库、管理员账户等配置;
  • 将所有文件上传到网站的根目录,可能是 public_html 或者 wwwroot 等等;
  • 访问 http://your-own-domain.com/admin/ 来进行安装。

yourls 的用户名和密码是以字符串形式存放在配置文件中的,需要在设置时指定。

Docker

推荐使用 Docker 安装

配置

基本的配置可以分为三个部分

数据库设置

配置文件在目录下 /user/config.php

/** MySQL 数据库用户名 */
define( 'YOURLS_DB_USER', 'your db user name' );
/** MySQL 数据库密码 */
define( 'YOURLS_DB_PASS', 'your db password' );
/** 用来存储 Yourls 数据的数据库 */
define( 'YOURLS_DB_NAME', 'yourls' );
** 如果你不是用的标准 hostname 端口, 请用'hostname:port'这种格式配置,例如 'localhost:8888' 或者 '127.0.0.1:666' */
define( 'YOURLS_DB_HOST', 'localhost' );
/** MySQL 表前缀字符 */
define( 'YOURLS_DB_PREFIX', 'yourls_' );

站点设置

/** YOURLS 安装 URL -- 字母小写,并且结尾不带斜线
** 如果你想配置到 "http://sho.rt", 就不要在浏览器中用 "http://www.sho.rt"(反之亦然) */
define( 'YOURLS_SITE', 'https://your-own-domain.com' );
/** 服务器时区 GMT 值,北京时间 +8 */
define( 'YOURLS_HOURS_OFFSET', 0 ); 
/** YOURLS 语言
** 更改此项设置来使用你优先的语言翻译文件,默认语言为英语
** 翻译文件 (a .mo file) 需要提前放在 /user/language 目录下
** 通过查看 http://yourls.org/translations 获取更多翻译信息 */
define( 'YOURLS_LANG', '' ); 
/** 允许多个短链接对应同一原链接
** 设置为 true 则表示短链接和原链接一一对应(默认 Yourls 设置)
** 设置为 false 则允许多个短链接对应同一原链接(类似 bit.ly 表现) */
define( 'YOURLS_UNIQUE_URLS', true );
/** Private 表示后台管理需要密码登陆作为默认手段来实现管理
** 设置为 false 意味着对公众开放模式(例如在内网配置或者测试安装)
** 查看 http://yourls.org/privatepublic 获取更多细节 */
define( 'YOURLS_PRIVATE', true );
/** 用来加密 cookies 的一串随机哈希值,并不需要记住这个,要让它尽量长而复杂,可以从 http://yourls.org/cookie 来获取随机哈希值 **/
define( 'YOURLS_COOKIEKEY', 'modify this text with something random' );
/** 登陆管理站点的用户和密码,密码可以是纯文本或者加密的哈希值
** YOURLS 将会自动加密本文件中的纯文本密码
** 查看 http://yourls.org/userpassword 获取更多信息 */
$yourls_user_passwords = array(
'username' => 'password',
// 'username2' => 'password2',
// 你可以利用'login'=>'password'这种格式来添加更多行
);
/** 调试模式,用来输出一些内部信息
** 对于运行中的站点默认是 false,在编码或者获取提交信息时才会启用 */
define( 'YOURLS_DEBUG', false );

链接设置

/** 链接缩短方式: 36 或者 62 */
define( 'YOURLS_URL_CONVERT', 36 );
/*
* 36: 生成数字和小写字母组成的短链接关键字(例如: 13jkm)
* 62: 生成数字大小写混合的短链接关键字(例如: 13jKm 或者 13JKm)
* 选择一个来设置,你开始创建连接之后最好别再更改
*/
/** 
* 保留关键字(这样子在创建链接时就会屏蔽这些关键字)
* 这里会填上负面、潜在误导性的词语
*/
$yourls_reserved_URL = array(
'porn', 'faggot', 'sex', 'nigger', 'fuck', 'cunt', 'dick',
);

主页设置

默认情况下如果安装了 yourls,那么 https://sho.rt 根目录是空的,如果不想要展示一个空空的根,可以在根目录下新建 vim index.php 加入以下内容

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://yourdomain.com");
?>

修改用户名密码

yourls 中的密码可以直接修改 /user/config.php 文件中

<?php
$yourls_user_passwords = array(
    'name' => 'md5:71688:0ce43474167f743b7b92d046ae970801',
);

直接修改后面密码hash部分,再下一次启动时 yourls 会自动加密该密码

如果使用之前我的Docker方式安装的,需要在 docker-compose.yml 中设定好密码,这样重新启用 docker-compose 即可。

插件

官方在 GitHub 上总结了非常多的插件,可以根据自己的需求找到想使用的插件。

使用插件的基本流程如下,所有的插件都可以使用这样的方式安装启用:

  • 将插件拷贝到 /user/plugins/插件名/ 目录下
  • 然后在管理页面激活插件

Allow Hyphens in Short URLs

官方默认插件,允许在短域名中加入 - 短横线,有些时候为了易读性加上字符分割还是非常易识别的。

Random Keywords

默认 yourls 的短链接是数字递增的,随机短链接插件将短链接变成随机字符串。

YAPCache

将点击缓存,减少数据库读

YAPCache 是 Ian Barber’s YOURLS APC Cache 插件的fork版本,增加了缓存等等功能,不要同时安装这两个版本。

Conditional Toolbar

可以修改短域名的模式,比如将 https://sho.rt/abc 变为 https://sho.rt/m/abc 这样的模式,那么可以在 /m/ 下显示一个工具栏,不推荐使用,影响用户体验。

Qr code

在短链接后面添加 .qr 显示二维码

Public Prefix ‘n’ Shorten

处理 http://sho.rt/https://google.com 这样的链接不指向 admin

google-analytics-for-yourls

在admin中可以添加track变量,这个插件会添加一些 Google Analysis 的参数 GA campaign info,对于需要大量追踪信息的商家来说很好的插件。

google-analytics-yourls-plugin

给stats & admin page 添加 GA 分析,只有当访问 https://gtk.pw/ins+ 这样带 + 号的短链接才会被追踪到 Google Analytics

在将 plugin.php 放到 user/plugin/ganalytics 目录下之后,需要在 config 文件中定义

define(GANALYTICS_ACCOUNT, "UA-XXXXXX-UU");

YOURLS-GA-MP-Tracking

另一个 GA track

什么时候使用短链接

短域名服务或许是兴起于 Twitter 只能写140个字开始,因为有限的文字数量,所以必须要非常有效的传递每一个信息,所有不能把文字浪费在长链接上,自从 t.co 开始就源源不断的开始涌现出各种各样的短链接服务,所以应该在什么时候使用这个服务呢,我总结了一下我个人用的几个情况

  • 需要追踪链接点击情况,虽然用 Google Analysis 也能够做,但是短链接明显更加简单
  • 需要隐藏掉长链接的尾巴,一方面是为了链接美观,一方面也是隐藏真实的长链接

reference