Fix vercel redirects with trailingSlash always (#7447)
This commit is contained in:
parent
38b104049a
commit
32bde967f4
4 changed files with 20 additions and 2 deletions
5
.changeset/nervous-paws-knock.md
Normal file
5
.changeset/nervous-paws-knock.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
'@astrojs/vercel': patch
|
||||
---
|
||||
|
||||
Fix redirects for root page when using `trailingSlash: "always"`
|
|
@ -87,7 +87,7 @@ export function getRedirects(routes: RouteData[], config: AstroConfig): VercelRo
|
|||
headers: { Location: getRedirectLocation(route, config) },
|
||||
status: getRedirectStatus(route),
|
||||
});
|
||||
} else if (route.type === 'page') {
|
||||
} else if (route.type === 'page' && route.route !== '/') {
|
||||
if (config.trailingSlash === 'always') {
|
||||
redirects.push({
|
||||
src: config.base + getMatchPattern(route.segments),
|
||||
|
|
0
packages/integrations/vercel/test/fixtures/redirects/src/pages/subpage.astro
vendored
Normal file
0
packages/integrations/vercel/test/fixtures/redirects/src/pages/subpage.astro
vendored
Normal file
|
@ -1,5 +1,4 @@
|
|||
import { expect } from 'chai';
|
||||
import * as cheerio from 'cheerio';
|
||||
import { loadFixture } from './test-utils.js';
|
||||
|
||||
describe('Redirects', () => {
|
||||
|
@ -18,6 +17,7 @@ describe('Redirects', () => {
|
|||
},
|
||||
'/blog/[...slug]': '/team/articles/[...slug]',
|
||||
},
|
||||
trailingSlash: 'always',
|
||||
experimental: {
|
||||
redirects: true,
|
||||
},
|
||||
|
@ -56,4 +56,17 @@ describe('Redirects', () => {
|
|||
expect(blogRoute.headers.Location.startsWith('/team/articles')).to.equal(true);
|
||||
expect(blogRoute.status).to.equal(301);
|
||||
});
|
||||
|
||||
it('define trailingSlash redirect for sub pages', async () => {
|
||||
const config = await getConfig();
|
||||
|
||||
const subpathRoute = config.routes.find((r) => r.src === '/\\/subpage');
|
||||
expect(subpathRoute).to.not.be.undefined;
|
||||
expect(subpathRoute.headers.Location).to.equal('/subpage/');
|
||||
});
|
||||
|
||||
it('does not define trailingSlash redirect for root page', async () => {
|
||||
const config = await getConfig();
|
||||
expect(config.routes.find((r) => r.src === '/')).to.be.undefined;
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue