parent
ce37bc77e0
commit
1ec1df1264
3 changed files with 39 additions and 0 deletions
5
.changeset/chatty-parrots-compare.md
Normal file
5
.changeset/chatty-parrots-compare.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
'@astrojs/sitemap': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix sitemap generation with a base path
|
|
@ -79,6 +79,8 @@ const createPlugin = (options?: SitemapOptions): AstroIntegration => {
|
||||||
}
|
}
|
||||||
|
|
||||||
let pageUrls = pages.map((p) => {
|
let pageUrls = pages.map((p) => {
|
||||||
|
if (p.pathname !== '' && !finalSiteUrl.pathname.endsWith('/'))
|
||||||
|
finalSiteUrl.pathname += '/';
|
||||||
const path = finalSiteUrl.pathname + p.pathname;
|
const path = finalSiteUrl.pathname + p.pathname;
|
||||||
return new URL(path, finalSiteUrl).href;
|
return new URL(path, finalSiteUrl).href;
|
||||||
});
|
});
|
||||||
|
|
|
@ -59,6 +59,22 @@ describe('Trailing slash', () => {
|
||||||
const urls = data.urlset.url;
|
const urls = data.urlset.url;
|
||||||
expect(urls[0].loc[0]).to.equal('http://example.com/one');
|
expect(urls[0].loc[0]).to.equal('http://example.com/one');
|
||||||
});
|
});
|
||||||
|
describe('with base path', () => {
|
||||||
|
before(async () => {
|
||||||
|
fixture = await loadFixture({
|
||||||
|
root: './fixtures/trailing-slash/',
|
||||||
|
trailingSlash: 'never',
|
||||||
|
base: '/base',
|
||||||
|
});
|
||||||
|
await fixture.build();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('URLs do not end with trailing slash', async () => {
|
||||||
|
const data = await readXML(fixture.readFile('/sitemap-0.xml'));
|
||||||
|
const urls = data.urlset.url;
|
||||||
|
expect(urls[0].loc[0]).to.equal('http://example.com/base/one');
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('trailingSlash: always', () => {
|
describe('trailingSlash: always', () => {
|
||||||
|
@ -75,5 +91,21 @@ describe('Trailing slash', () => {
|
||||||
const urls = data.urlset.url;
|
const urls = data.urlset.url;
|
||||||
expect(urls[0].loc[0]).to.equal('http://example.com/one/');
|
expect(urls[0].loc[0]).to.equal('http://example.com/one/');
|
||||||
});
|
});
|
||||||
|
describe('with base path', () => {
|
||||||
|
before(async () => {
|
||||||
|
fixture = await loadFixture({
|
||||||
|
root: './fixtures/trailing-slash/',
|
||||||
|
trailingSlash: 'always',
|
||||||
|
base: '/base',
|
||||||
|
});
|
||||||
|
await fixture.build();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('URLs end with trailing slash', async () => {
|
||||||
|
const data = await readXML(fixture.readFile('/sitemap-0.xml'));
|
||||||
|
const urls = data.urlset.url;
|
||||||
|
expect(urls[0].loc[0]).to.equal('http://example.com/base/one/');
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue