我們的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代碼中,就可以跳轉到正确的頁面。
至于産生這種錯誤的原因還不确定,但規律都是一樣的,就都可以解決了。
评论