bc2cb2210f
Noticed this while reviewing https://github.com/vercel/next.js/pull/14376. After having done https://github.com/vercel/next.js/pull/13699, this code didn't feel right to me: ```js function prepareRoute(path: string) { path = delBasePath(path || '') // this /index rewrite is problematic, it makes pages/index.js // and pages/index/index.js point to the same thing: return toRoute(!path || path === '/' ? '/index' : path) } ``` Added a nested index page to the prerender tests and found it was rendering the `/` route on navigation. This uncovered 2 more places around the dataroute where the index path was not translated correctly. **edit:** Just to note that there was nothing wrong with https://github.com/vercel/next.js/pull/14376, the issue was already there, I just noticed it while reading that PR
16 lines
565 B
TypeScript
16 lines
565 B
TypeScript
// Translate a pages asset path (relative from a common prefix) back into its logical route
|
|
// "asset path" being its javascript file, data file, prerendered html,...
|
|
export default function getRouteFromAssetPath(
|
|
assetPath: string,
|
|
ext: string = ''
|
|
): string {
|
|
assetPath = assetPath.replace(/\\/g, '/')
|
|
assetPath =
|
|
ext && assetPath.endsWith(ext) ? assetPath.slice(0, -ext.length) : assetPath
|
|
if (assetPath.startsWith('/index/')) {
|
|
assetPath = assetPath.slice(6)
|
|
} else if (assetPath === '/index') {
|
|
assetPath = '/'
|
|
}
|
|
return assetPath
|
|
}
|