這個周末花了一些時間找到和解決了兩種錯誤網址的問題,今天星期一上班趕緊與相關項目的運營和程序同事進行了分享商議,現在把要點放在下面:
一、發現錯誤網址的現象:
- 百度點擊搜索結果到找不到的頁面或者錯誤的頁面
- 百度快照中錯誤的亂碼
- 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
评论