Skip to content

Commit 3e69d3e

Browse files
committed
fix: include query in redirect
1 parent 7decbcd commit 3e69d3e

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

server/middleware/canonical-redirects.global.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export default defineEventHandler(async event => {
3232
return
3333
}
3434

35-
const path = event.path.split('?')[0]!
35+
const [path = '/', query] = event.path.split('?')
3636

3737
// username
3838
if (path.startsWith('/~') || path.startsWith('/_')) {
@@ -48,7 +48,7 @@ export default defineEventHandler(async event => {
4848
if (pkgMatch?.groups) {
4949
const args = [pkgMatch.groups.org, pkgMatch.groups.name].filter(Boolean).join('/')
5050
setHeader(event, 'cache-control', cacheControl)
51-
return sendRedirect(event, `/package/${args}`, 301)
51+
return sendRedirect(event, `/package/${args}` + (query ? '?' + query : ''), 301)
5252
}
5353

5454
// /@org/pkg/v/version or /@org/pkg@version → /package/org/pkg/v/version
@@ -60,13 +60,17 @@ export default defineEventHandler(async event => {
6060
if (pkgVersionMatch?.groups) {
6161
const args = [pkgVersionMatch.groups.org, pkgVersionMatch.groups.name].filter(Boolean).join('/')
6262
setHeader(event, 'cache-control', cacheControl)
63-
return sendRedirect(event, `/package/${args}/v/${pkgVersionMatch.groups.version}`)
63+
return sendRedirect(
64+
event,
65+
`/package/${args}/v/${pkgVersionMatch.groups.version}` + (query ? '?' + query : ''),
66+
301,
67+
)
6468
}
6569

6670
// /@org → /org/org
6771
const orgMatch = path.match(/^\/@(?<org>[^/]+)$/)
6872
if (orgMatch?.groups) {
6973
setHeader(event, 'cache-control', cacheControl)
70-
return sendRedirect(event, `/org/${orgMatch.groups.org}`)
74+
return sendRedirect(event, `/org/${orgMatch.groups.org}` + (query ? '?' + query : ''), 301)
7175
}
7276
})

0 commit comments

Comments
 (0)