不一样的免插件实现 URL 外链 GO 效果
很多时候需要在站内做外链的跳转,既想留住连接并且又不希望访客看到目标页面的地址。
实现起来有很多方法,比较简单的是使用插件,推荐的有Simple URLs、Go Codes等。
虽然插件很方便,但是我这里说的是另外一个免插件的方法,无插件的话写htaccess也可以,但是无法在 WEB 端快捷的编辑。
先说我想要的需求:
- 容易部署
- 容易管理
- 隐藏目标地址
- 统计(暂时没有实现代码)
我这的解决方案是建一个文件夹,两个文件,其实如果用伪静态的话,一个文件就行。
步骤1:
在主题模板下建立任意名字的 php 文件,我这里为 go.php ,建在主题下边为的是以后可以在 仪表盘 > 外观 > 编辑 中方便的编辑。
文件开始的内容就是你要跳转链接的数组, keys 为跳转的关键字, values 为目标地址,这样可以达到隐藏真实地址的方式,如果不想隐藏就 key 和 value 写一样的呗。
$url= [
"tools" => "https://tools.dyniao.com",
"dyniao" => "https://www.dyniao.com",
];
$go=$_SERVER['QUERY_STRING'];
if(array_key_exists($go, $url))
{
header("Location: $url[$go]");
//PHP默认 302 跳转。如果需要 301 ,写成下边的样子。
//header("Location: $url[$go]", true, 301);
exit;
}
代码没几行,主要是先声明个跳转数组,然后从 url 中获取关键字,再根据关键字判断应该跳还是不跳,这样也就避免了,有人拿你的跳转来干坏事。
步骤2:
不愿意用伪静态就这么办!
在根目录建立 go 文件夹,内部放一个 index.php 文件,代码如下
include '../wp-content/themes/你的主题/go.php';
这样在后台的【Theme Editor】,就可以快速的编辑,不用在修改完上传文件了。
然后外链链接这么写
https://www.dyniao.com/go/?你的外链
如果想用伪静态就这么办!
写个伪静态规则
nginx
rewrite ^/go/(.*)$ /wp-content/themes/你的主题/go-url.php?$1 last;
htaccess
RewriteRule go/(.*) wp-content/themes/你的主题/go.php?$1
然后外链链接这么写
https://www.dyniao.com/go/你的外链
就是相差一个”?”。
最后留的“统计”坑,其实可以这么实现,而且不用数据库,把数组改成文件格式,一行一个跳转地址和次数。然后 php 读写文件增加次数就行了, 但是性能堪忧。
不过目前还不用统计,所以不考虑了,留着坑。
--- EOF ---