diff --git a/packages/vue-app/template/server.js b/packages/vue-app/template/server.js index a7a13e3638..c030476123 100644 --- a/packages/vue-app/template/server.js +++ b/packages/vue-app/template/server.js @@ -50,7 +50,7 @@ const createNext = ssrContext => (opts) => { opts.path = urlJoin(routerBase, opts.path) } // Avoid loop redirect - if (opts.path === ssrContext.url) { + if (decodeURIComponent(opts.path) === ssrContext.url) { ssrContext.redirected = false return } diff --git a/test/e2e/basic.browser.test.js b/test/e2e/basic.browser.test.js index 58dd343b76..46cd0b10c0 100644 --- a/test/e2e/basic.browser.test.js +++ b/test/e2e/basic.browser.test.js @@ -319,6 +319,11 @@ describe('basic browser', () => { page.close() }) + test('/redirection/no loop', async () => { + const page = await browser.page(url('/redirection/no loop')) + expect(await page.$text('h1')).toContain('Redirected page') + }) + // Close server and ask nuxt to stop listening to file changes afterAll(async () => { await nuxt.close() diff --git a/test/fixtures/basic/pages/redirection/_slug.vue b/test/fixtures/basic/pages/redirection/_slug.vue new file mode 100644 index 0000000000..085a77b76b --- /dev/null +++ b/test/fixtures/basic/pages/redirection/_slug.vue @@ -0,0 +1,18 @@ + + +