背景代碼是這樣的:
按理說這樣就行了,各大浏覽器也正常執行了。
但是,一不下心發現,隻要URL中出現“ 充 ”這個漢字,直接就報404錯誤
例如這樣:
奇葩吧。
經過漫長的調查發現,原因 有可能 是:
充 這個漢字在URL中直接送出,經過浏覽器轉碼後,會變成一串包含“ / ”的“亂碼”。
後來經過類似測試發現,果然隻要URL中包含“ / ”的參數,都無法通過@PathVariable 正确比對。
有人說不如改成這樣:
方案1:
在Server端通過urlencode把漢字先進行UTF-8編碼,然後扔到前端。
但是這樣做的話,URL就會變成這個醜樣,這和亂碼有什麼差別?真心不喜歡。
還有人說可以這樣
方案2:
然後在Controller中用 @RequestParam 來接收參數,這樣确實是可以的。
但是SEO大神說,url中包含?的動态參數後,有可能會被蜘蛛重複抓取,不利于SEO。
難道就沒有辦法在保持URL格式與漢字都不變的情況,實作這個功能嗎?
最後終于發現,有人這樣搞定了!
前端:
後端:
搞完之後,不管你輸入什麼樣的URL,都能進入到指定的方法!