项目地址: 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
- 下载本简体中文语言包,将
zh_CN.po
和zh_CN.mo
两个文件复制到YOURLS安装路径下的user/languages
文件夹中。 - 修改
user/config.php
文件,在文件中找到以下代码:define(‘YOURLS_LANG’,”); 将其修改为:define(‘YOURLS_LANG’,’zh_CN’); - 如果没有该文件,说明是新装程序,替换
user/config-sample.php
另存为该文件名即可。 - 保存即可
- 按照官方的安装向导对其他的设置进行修改。 当然也可以将服务器上已经配置好的
user/config.php
文件下载到本地进行修改。 - 完成后,将YOURLS安装路径中的所有文件上传到你的服务器或者主机空间中。 如果你不是全新安装或升级的话,可以只上传补充的语言包和修改的
user/config.php
文件。 - 浏览器访问
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设计界面和功能等即可,或者接入到其它站点程序中,好处是可以进行网址、域名过滤等功能。