我有一个这样的url:manage/text_U2FsdGVkX1/7AucFzVPX7OpRHb8Dlk/ApiJsTvYroROv4Ds4oshwC+cg3a7Mz/aO
应该由路由/目录/pages/manage/[id]
id = testrongomeEncryptedString
然而,由于/
,这不会工作。所以我决定编码这个(使用encodeURIComponent
),这给了我这个url:manage/test_U2FsdGVkX1%2F7AucFzVPX7OpRHb8Dlk%2FApiJsTvYroROv4Ds4oshwC%2Bcg3a7Mz%2FaO
在我的本地开发服务器上,这工作得很好,但在生产中,我得到一个404。我猜NextJS仍然认为%2F
作为/
和寻找这条路线?
有办法防止这种情况吗?
如果你双重编码/解码,它工作正常
let yourValue = encodeURIComponent(encodeURIComponent(yourValue))
// Go to your route, for example:
// router.push(`/page/${yourValue}`)
在服务器端,你可以双解码,像这样:
let yourValue = decodeURIComponent(decodeURIComponent(yourValue))