yourls短网址程序安装、汉化、插件开发相关

项目地址: https://github.com/yourls/yourls

重新挖坑,文中以1.7.6为例

环境:Centos7 + Nginx1.17.8 + Mysql5.6.47 + php7.1

安装站点程序

安装:进入链接下载稳定版 https://github.com/YOURLS/YOURLS/releases 解压到网站根目录,配置伪静态,创建数据库,在 user/config.php 中配置后台用户密码等设置( 具体配置详情见官方wiki),访问http://[域名]/admin输入相关信息后即可安装成功。

建议修改相关参数

/*$yourls_user_passwords此处是账号密码,不会进行用户隔离,所有用户短链接信息共享*/
define( 'YOURLS_URL_CONVERT', 62 );
/*为程序是否区分大小写,默认36为不区分,62为区分*/
define( 'YOURLS_PRIVATE', true );
/*为程序是否为私人模式,私人模式创建链接、查看报表等均需要登录*/
/*$yourls_reserved_URL此处是被屏蔽的短链接关键词*/
语言包使用方法

汉化文件: https://github.com/ZvonimirSun/YOURLS-zh_CN

  1. 下载本简体中文语言包,将zh_CN.pozh_CN.mo两个文件复制到YOURLS安装路径下的user/languages文件夹中。
  2. 修改user/config.php文件,在文件中找到以下代码:define(‘YOURLS_LANG’,”); 将其修改为:define(‘YOURLS_LANG’,’zh_CN’); 
  3. 如果没有该文件,说明是新装程序,替换user/config-sample.php另存为该文件名即可。
  4. 保存即可
  1. 按照官方的安装向导对其他的设置进行修改。 当然也可以将服务器上已经配置好的user/config.php文件下载到本地进行修改。
  2. 完成后,将YOURLS安装路径中的所有文件上传到你的服务器或者主机空间中。 如果你不是全新安装或升级的话,可以只上传补充的语言包和修改的user/config.php文件。
  3. 浏览器访问http://[domain]/admin/,就这样!你就可以看到简体中文版的YOURLS站点了。

注意如果语言包过于老旧,会导致改了配置文件依然不能显示中文的问题,此时不是配置文件没生效,需要寻找新的语言包进行替换,也可以自行进行汉化。官方语言文件:https://github.com/YOURLS/YOURLS.pot

插件推荐

首先推荐启用官方插件【 Random ShortURLs 】,并且配置好长度,默认生成短链接为id+1的方式,该插件将改变为随机生成指定字符串的模式,与国内各类短网址类似。

json-response https://github.com/tessus/yourls-json-response 在短链接后面添加.json打开即可获取该短链接的相关信息(原长连接,标题等)

插件开发

因为该程序没有站点主入口,如果直接访问域名会403,所以需要自行开发一个插件进行操作。

创建文件夹:/站点根目录/user/plugins/你的插件名/

该目录中创建plugin.php文件,内容样例如下:

<?php
/*
Plugin Name: 一个插件
Plugin URI: https://www.fengletian.cn/?yourlsPlugin
Description: 这是一个插件
Version: 1.0
Author: aAuthor
Author URI: https://www.fengletian.cn/?yourlsPluginAuthor
*/
/*拦截IP获取命令,进行IP自定义
get参数中如果有aip则使用aip没有则分别从CF-Connecting-IP、X-Forwarded-For到REMOTE_ADDR依次尝试获取
*/
yourls_add_filter( 'get_IP', 'hook_get_ip' );
function hook_get_ip() {
	if(isset($_GET['aip']) && $_GET['aip']){
		$ip=$_GET['aip'];
	}else{
		$headers = array('CF-Connecting-IP', 'X-Forwarded-For', 'HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP', 'HTTP_VIA', 'REMOTE_ADDR' );
		foreach( $headers as $header ) {
			if ( !empty( $_SERVER[ $header ] ) ) {
				$ip = $_SERVER[ $header ];
				break;
			}
		}
	}
    return $ip;
}
/*处理在链接前面直接加主站的情况
如:http://yourls.test/https://www.baidu.com  转换为=>  http://yourls.test/?url=https%3A%2F%2Fwww.baidu.com
*/
yourls_add_action( 'load_template_redirect_admin' , 'hook_wzlj' );
function hook_wzlj($url){
	yourls_redirect("/?url=" . rawurlencode($url[0]));
}
/*如果访问了不存在的短链接跳转到首页并附加key参数*/
yourls_add_action( 'redirect_keyword_not_found' , 'hook_atomarch_redirect' );
function hook_atomarch_redirect($request) {
 yourls_redirect("/?key=" . $request[0] );
}

使用这三个规则配合api 自行编写一个index.php设计界面和功能等即可,或者接入到其它站点程序中,好处是可以进行网址、域名过滤等功能。