mirror of
https://github.com/withastro/astro.git
synced 2025-03-10 23:01:26 -05:00
Fix vercel redirects with trailingSlash always (#7447)
This commit is contained in:
parent
0a2331ba40
commit
8386809a8b
3 changed files with 15 additions and 2 deletions
|
@ -87,7 +87,7 @@ export function getRedirects(routes: RouteData[], config: AstroConfig): VercelRo
|
||||||
headers: { Location: getRedirectLocation(route, config) },
|
headers: { Location: getRedirectLocation(route, config) },
|
||||||
status: getRedirectStatus(route),
|
status: getRedirectStatus(route),
|
||||||
});
|
});
|
||||||
} else if (route.type === 'page') {
|
} else if (route.type === 'page' && route.route !== '/') {
|
||||||
if (config.trailingSlash === 'always') {
|
if (config.trailingSlash === 'always') {
|
||||||
redirects.push({
|
redirects.push({
|
||||||
src: config.base + getMatchPattern(route.segments),
|
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 { expect } from 'chai';
|
||||||
import * as cheerio from 'cheerio';
|
|
||||||
import { loadFixture } from './test-utils.js';
|
import { loadFixture } from './test-utils.js';
|
||||||
|
|
||||||
describe('Redirects', () => {
|
describe('Redirects', () => {
|
||||||
|
@ -18,6 +17,7 @@ describe('Redirects', () => {
|
||||||
},
|
},
|
||||||
'/blog/[...slug]': '/team/articles/[...slug]',
|
'/blog/[...slug]': '/team/articles/[...slug]',
|
||||||
},
|
},
|
||||||
|
trailingSlash: 'always',
|
||||||
experimental: {
|
experimental: {
|
||||||
redirects: true,
|
redirects: true,
|
||||||
},
|
},
|
||||||
|
@ -56,4 +56,17 @@ describe('Redirects', () => {
|
||||||
expect(blogRoute.headers.Location.startsWith('/team/articles')).to.equal(true);
|
expect(blogRoute.headers.Location.startsWith('/team/articles')).to.equal(true);
|
||||||
expect(blogRoute.status).to.equal(301);
|
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…
Add table
Reference in a new issue