又一次谈到了SEO的话题,虽然岩兔站没啥流量,但SEO问题仍然值得关注,让好不容易积攒起来的流量不至于流失掉。
这次做的是外链优化,逛大佬网站的时候常常发现链接不直链,比如要链接baidu.com
时,链接地址是https://bak.yantuz.cn:8000/go/?baidu.com
,这在SEO上有什么用呢?岩兔站的理解就是将所有“外链”转换成“内链”同时又不影响用户体验,与是开始搞起。
实现方式
之前岩兔站研究过外链增加rel="nofollow"
属性,之前是用插件实现的,现在连带外链go全部代码实现,又能省掉一个插件了。
首先确定跳转链接样式,如岩兔站选择的是https://bak.yantuz.cn:8000/go/?baidu.com
所以需要在网站根目录下新建/go/index.php
文件,文件内容如下:
<?php $t_url = $_SERVER["QUERY_STRING"]; $url='https://bak.yantuz.cn:8000/'; $title='岩兔站外链跳转中……'; if(!empty($t_url)) { preg_match('/(http|https):\/\//',$t_url,$matches); if($matches){ $url=$t_url; } else { preg_match('/\./i',$t_url,$matche); if($matche){ $url='http://'.$t_url; } } } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="refresh" content="1;url='<?php echo $url;?>';"> <title><?php echo $title;?></title> </head> <body> <?php echo $title;?> </body> </html>
解析
- PHP获取传入的参数,即url中第一个?之后的部分
- 判断参数合法性,并且进行跳转
- 页面内容岩兔站只写了文字,大佬们可以自由发挥,做个骚气的跳转动画
接下来修改functions.php
文件,文件通常在themes主题目录下,岩兔站用的是DUX主题,所以路径是/wp-content/themes/dux/functions.php
在文件最后增加:
//给外部链接加上跳转 function the_content_nofollow($content) { preg_match_all('/<a(.*?)href="(.*?)"(.*?)>/',$content,$matches); if($matches){ foreach($matches[2] as $val){ if(strpos($val,'://')!==false && strpos($val,home_url())===false && !preg_match('/\.(jpg|jepg|png|ico|bmp|gif|tiff)/i',$val) && !preg_match('/yantuz\.cn/i',$val)){ $content=str_replace("href=\"$val\"", "href=\"".home_url()."/go/?$val\" rel='nofollow' target='_blank'",$content); } } } return $content; } add_filter('the_content','the_content_nofollow',999);
解析
- 根据正则表达式,筛选出所有<a>链接
- 排除图片链接/和岩兔站内链接
- 将链接替换为go链接,并增加nofollow属性
设置完成,前台页面刷新尝试一下。
测试链接
外链:岩兔站微博
更改链接为go跳转,并增加nofollow属性
图片链接:https://wx2.sinaimg.cn/large/007452UMly1fxo0whl04cj30b404x0ss.jpg
保持原链接状态。