我们的EmojiAll.com网站中一些网址采用的是对Emoji进行直接URL编码,一些对于UTF-8编码处理不完善的爬虫容易把我们正确的网址变换错误,导致我们的Drupal日志中总是看到404报错。百度爬虫以前对网址都识别为GB2312,我们后来转换纠正过,还有URL一次解码、二次解码变换我们都尝试过,纠正了不少错误、跳转到正确的网址。
但下面这种报错一直存在好几年了,我和同事都尝试过很多解码、编码方式,都没有找到规律:
这个周末我看繁体词典网站drupal日志中也有大量乱码网址产生的404,就去排查,但繁体辞典的错误还没有解决,就先来看看emoji的类似情况,一下子还找到了规律:
把"/%EF"替换为"/%F0%9F"就回归正确了,蓝色框后面的部分其实都是正确的,就是蓝色框中的这开头一点错了。
我打开一个日志页中的几十个类似报错,全部都是一样的问题,包括"emoji/某emoji"页以及"relation-chart-page/某emoji"等等。
下周可以写一个通用的判断、301跳转办法,放在各种views的无结果显示的php代码中,就可以跳转到正确的页面。
至于产生这种错误的原因还不确定,但规律都是一样的,就都可以解决了。
评论