yourls可以批量生成自己的短地址,还可以管理,统计每个短地址点击数量,还可以提供api接口。
这个开源免费,适合拿来做二次开发。
至少php5.6 如果要使用api 还需要有curl拓展
至少mysql5
git https://github.com/YOURLS/YOURLS.git
地址:https://github.com/YOURLS/YOURLS
tips:受限于git随缘被墙,我已经下载好了,文章末提供下载地址
define( 'YOURLS_DB_USER', 'root' );
define( 'YOURLS_DB_PASS', '123456' );
define( 'YOURLS_DB_NAME', 'yourls' );
define( 'YOURLS_DB_HOST', 'localhost' );
define( 'YOURLS_DB_PREFIX', 'yourls_' );
//上面是数据信息不用多说
define( 'YOURLS_SITE', 'http://test.com' ); //你自己服务器的域名 用最短的,短地址也是基于这个生成。
define( 'YOURLS_HOURS_OFFSET', '+8'); //时区偏移
define( 'YOURLS_LANG', 'zh_CN' ); //这个语言默认是英文,没有中文包,需要自己去 https://github.com/guox/yourls-zh_CN/下载,放到 user/languages 里面
define( 'YOURLS_UNIQUE_URLS', true ); //短地址是否唯一
define( 'YOURLS_PRIVATE', true ); //是否私有,如果私有的,则进行api调用生成短地址时需要传递用户名和密码
define( 'YOURLS_COOKIEKEY', 'A2C7&H~r80pTps{nIfI8VFpTxnfF3c)j@J#{nDUh' );//加密cookie 去 http://yourls.org/cookie 获取
$yourls_user_passwords = array(
'admin' => '123456' /* Password encrypted by YOURLS */ , //用户名=>密码 可填多个 登录成功后这里的明文密码会被加密
);
define( 'YOURLS_DEBUG', false ); //是否开启调试
define( 'YOURLS_URL_CONVERT', 62 ); //使用36进制 还是62进制 这个最好一开始设好不要修改,避免地址冲突,建议62进制
$yourls_reserved_URL = array(
'porn', 'faggot', 'sex', 'nigger', 'fuck', 'cunt', 'dick', //排除一下短地址,这些地址是不会生成的
);
上传到服务器
apache
(1)配置里开启 mod_rewrite 模块
(2)创建 .htaccess 文件
#.htaccess 文件内容,如果是根目录下 http://yoursite/
# BEGIN YOURLS
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /yourls-loader.php [L]
# END YOURLS
#如果是二级目录下 http://yoursite/somedir/
# BEGIN YOURLS
RewriteEngine On
RewriteBase /somedir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /somedir/yourls-loader.php [L]
# END YOURLS
nginx
server {
# HTTP over IPv4 & IPv6
listen 80;
listen [::]:80;
# HTTPS over IPv4 & IPv6
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate example.com.crt;
ssl_certificate_key example.com.key;
server_name example.com www.example.com;
# Root directory
root /path/to/yourls/files;
# Rewrites 主要看这一项配置就够了,路由重写
location / {
try_files $uri $uri/ /yourls-loader.php$is_args$args;
}
# PHP engine
location ~ \.php$ {
include fastcgi.conf;
# include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
}
}
只需要修改 includes/functions.php 272行左右
将 $id = yourls_get_next_decimal(); 改为 $id = time();
YOURLS允许使用老方法进行API调用,即使用username和password参数。
如果你担心这有潜在的风险,你也可以不使用你的用户名或密码进行API调用,而使用一个 secret signature token。
你的 secret signature token:在yourls工具中查看 (请保存好,勿泄露)
这个signature token仅仅用于API调用,而不能用于管理界面等。
只需要使用signature参数在你的API请求中,例如:
http://url.flblog.top/yourls-api.php?signature=523e666753&action=...
<?php
$timestamp = time();
// actual value: $time = 1612773137
$signature = md5( $timestamp . '9e692ad33d' );
// actual value: $signature = "7885a0ff1f7d024d0f0f2a26909e4871"
?>
使用参数signature和timestamp在你的API请求中,例如:
http://url.flblog.top/yourls-api.php?timestamp=$timestamp&signature=$signature&action=...
Actual values:
http://url.flblog.top/yourls-api.php?timestamp=1582871023&signature=56b641d8097db4fec0fb5e24a1878f13&action=...
这个URL的有效期为43200秒
每个短链接后面拼接一个 + ,就可以查看这个链接的点击情况,例如:http://test.com/1H7fa7+
本文由 Technology garden 作者:鸭鸭吖 发表,转载请注明来源!