这个周末花了一些时间找到和解决了两种错误网址的问题,今天星期一上班赶紧与相关项目的运营和程序同事进行了分享商议,现在把要点放在下面:
一、发现错误网址的现象:
- 百度点击搜索结果到找不到的页面或者错误的页面
- 百度快照中错误的乱码
- Drupal日志中的404中发现
- Apache/Nginx日志中的404中发现
- Cloudflare日志中发现
- Google Search Console中发现
二、产生错误网址的原因:
- 对网址编码urlencode解码urldecode的处理不对,可能重复多次处理
- 对多字节字符(例如:中日韩文、Emoji等)编码的处理不对,应该都是用UTF-8编码
三、解决错误网址的办法:
- 找到错误编码的规律,确定错误编码转正确编码的规则
- 对错误的编码使用适当的PHP函数按正确编码进行转换
- 判断转换后的字符是否为我们网站数据库中应有的字符
- 如果是应用的字符,再301跳转到正确的页面
- 如果不是应有的字符,再尝试其它编码转换或者输出404
四、参考链接:
补充:目前找到的一些编码转换:
- UTF-8 转 Windows-1252
- UTF-8 转 GBK
- UTF-8 转 ISO-8859-1,再GBK 转 UTF-8
- UTF-8 转 Windows-1252,再GBK 转 UTF-8
- UTF-8 转 Windows-1252,再UTF-8 转 Windows-1252
- UTF-8 转 Windows-1252,再UTF-8 转 Windows-1252,再UTF-8 转 Windows-1252
- UTF-8 转 Windows-1252,再UTF-8 转 Windows-1252,再UTF-8 转 Windows-1252,再UTF-8 转 Windows-1252
- UTF-8 转 Windows-1252,再UTF-8 转 Windows-1252,再UTF-8 转 Windows-1252,再UTF-8 转 Windows-1252,再UTF-8 转 Windows-1252
- UTF-8 转 Windows-1252,再UTF-8 转 Windows-1252,再UTF-8 转 Windows-1252,再UTF-8 转 Windows-1252,再GBK 转 UTF-8
- UTF-8 转 Windows-1252,再UTF-8 转 Windows-1252,再GBK 转 UTF-8
- 简体 转 繁体
- +号 转 空格%20
评论