腾讯云服务器优惠活动华纳云香港服务器

禁止其他网站使用GO跳转页面失效的解决过程

前几天将 boke112 导航的外链(投稿文章链接除外)和评论者链接都变成了内链,并增加了一个GO 跳转页面,详见『关于将 boke112 导航外链改为内链的公告』。刚开始没有发现问题,直到前天才偶然发现以前的旧文章中的外链点击之后总是有问题,被误判为非本站使用 GO 跳转页面从而被重定向到指定页面。换句话就是说外链跳转失效了。

禁止其他网站使用GO跳转页面失效的解决过程-第1张-boke112百科(boke112.com)

遇到这个问题确实很无解,最关键就是只有某些外链出现这种被误判的情况,其他外链,特别是评论者链接都没有问题,所以那个时候折腾了很久,也百度、谷歌了很久,还是一头雾水,毫无头绪。后来还在boke112 导航交流群(415623933)提出这个问题,想看看有没有其他博主站长遇到过,或有什么有效的解决办法,可惜石沉大海毫无动静。可能大家都不太热衷于讨论问题,大多都比较喜欢闲聊吧。

当初自己就在想会不会是因为 boke112 导航使用了CDN导致误判出现?就好比使用 CDN 后,一些用户的 IP 都不是真实的 IP一样?根据这个思路百度、谷歌了半天也还是毫无收获。那个时候感觉自己钻了牛角尖,总是去寻找 CDN 后如何获取真实来源的页面地址,可惜最终找到的都是获取真实 IP 的相关文章。那时候还在想,是不是应该把 GO 跳转页面中的关于判断是否为自己站点使用跳转页面的代码改为判断 IP 地址?可惜技术有限就没有去尝试。最后只能先行删除 GO 跳转页面中关于“禁止其他网站使用我们的跳转页面”的相关代码来临时解决问题。

老实说,问题得不到解决连睡觉都不安稳,吃饭也不香,这个不知道是不是所有草根站长的通病?反正我就是这样,问题解决不了总是觉得心里有什么东西堵住一样。所以在前天晚上和昨天有空的时候一直在思考如何解决这个问题,也到谷歌去查找了很久,可惜还是没有进展。最后想到向某大神求助,可惜大神们都是比较忙的, QQ 留言也一直都没有得到回应,可能大神都很少登录 QQ 吧。

禁止其他网站使用GO跳转页面失效的解决过程-第2张-boke112百科(boke112.com)

既然其他途径都无法凑效,只能再次反复仔细研究“禁止其他网站使用我们的跳转页面”的相关代码,然后重点搜索“referrer”来查找解决办法。当初的我总以为是因为使用了 CDN 导致获得的“referrer”不真实所致,所以一直都未能找到真正的解决办法,原来是自己方向搞错了,这也再一次说明“方向比努力更重要”,因为方向不对的话,再努力也是一事无成。

后来在 CSDN 博客看到『详谈 javascript 中 document.referrer 的兼容性』这篇文章中关于“大部分浏览器都获取不到来源”的办法,具体如下:

  • 方法一:<meta name=”referrer” content=”never”> 和 widnow.open();
  • 方法二:a 标签中的 rel=”noreferrer”

并根据这两个办法来自检外链跳转失效的页面,没想到真的找到了问题所在。原来 boke112 导航外链跳转失效的链接都含有 noreferrer 标签,而这个标签就是 WordPress 默认文章编辑器 TinyMCE自动添加的。noreferrer 标签的作用就是在单击链接时隐藏引用者信息,换句话就是说点击有这个 noreferrer 标签的链接,GO 跳转页面都无法通过 document.referrer 来正确判断,都会默认为非 boke112 导航使用。而为什么后面的文章都没有这个误判的问题呢,这是因为 TinyMCE 后期升级之后改版了,只强制给链接插入 noopener 标签,已经不会强制插入“noopener noreferrer”标签了。

禁止其他网站使用GO跳转页面失效的解决过程-第3张-boke112百科(boke112.com)

既然弄清楚了问题的来龙去脉,那么解决起来就很简单了,只需要登录我们的数据库,通过 SQL 语句把以前的旧文章中的链接去掉 noreferrer 标签即可。比如可以通过以下 SQL 语句解决:

UPDATE wp_posts SET post_content = replace(post_content,'noopener noreferrer','noopener');
PS:因为以前的旧文章中的链接在发布文章时会被 TinyMCE 强制添加“noopener noreferrer”标签,所以我们只需要替换为“noopener”标签即可。至于 noopener 和 noreferrer 之间的区别可以参考『nofollow、noopener 和 noreferrer 标签的区别?』。

至此,终于把禁止其他网站使用 GO 跳转页面失效的问题解决了,而我也可以松一口气放松一下了。老实说,遇到问题、解决问题这个过程应该是很多博主站长们都会遇到的,而成功把问题解决之后的成就感应该还是蛮不错的,而且折腾之后,或多或少都能够学习到一些东西,这两点应该就是大家都喜欢折腾的重要原因。所以说,大家在折腾独立博客的时候,遇到问题的时候都应该多学习、多折腾、多搜索,这样才能有所进步。

本文地址:https://boke112.com/post/5896.html

赞 (0) 打赏
版权声明:本文为原创文章,版权归 boke112百科 所有,欢迎分享本文,转载请保留出处!发布此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请联系我们,确认后马上更正或删除,谢谢!
wu