From 6afb204047922d0fbab8f65fc86127c06c0bbdf0 Mon Sep 17 00:00:00 2001 From: joaquimpeixoto Date: Wed, 27 May 2026 17:52:38 +0100 Subject: [PATCH] fix: redirect legacy default-language URLs --- src/config/redirect.js | 97 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 96 insertions(+), 1 deletion(-) diff --git a/src/config/redirect.js b/src/config/redirect.js index c6a4bae5d9..de7740a374 100644 --- a/src/config/redirect.js +++ b/src/config/redirect.js @@ -64,6 +64,101 @@ const pages = { '/en/changelog/4x': 'https://github.com/expressjs/express/releases', }; -const redirects = { ...blog, ...api_v2, ...pages }; +const default_language_pages = { + '/advanced/best-practice-performance.html': '/en/advanced/best-practice-performance', + '/advanced/best-practice-performance': '/en/advanced/best-practice-performance', + '/advanced/best-practice-security.html': '/en/advanced/best-practice-security', + '/advanced/best-practice-security': '/en/advanced/best-practice-security', + '/advanced/developing-template-engines.html': '/en/advanced/developing-template-engines', + '/advanced/developing-template-engines': '/en/advanced/developing-template-engines', + '/advanced/healthcheck-graceful-shutdown.html': '/en/advanced/healthcheck-graceful-shutdown', + '/advanced/healthcheck-graceful-shutdown': '/en/advanced/healthcheck-graceful-shutdown', + '/advanced/security-updates.html': '/en/advanced/security-updates', + '/advanced/security-updates': '/en/advanced/security-updates', + '/api.html': '/en/api', + '/api': '/en/api', + '/guide/behind-proxies.html': '/en/guide/behind-proxies', + '/guide/behind-proxies': '/en/guide/behind-proxies', + '/guide/database-integration.html': '/en/guide/database-integration', + '/guide/database-integration': '/en/guide/database-integration', + '/guide/debugging.html': '/en/guide/debugging', + '/guide/debugging': '/en/guide/debugging', + '/guide/error-handling.html': '/en/guide/error-handling', + '/guide/error-handling': '/en/guide/error-handling', + '/guide/migrating-4.html': '/en/guide/migrating-4', + '/guide/migrating-4': '/en/guide/migrating-4', + '/guide/migrating-5.html': '/en/guide/migrating-5', + '/guide/migrating-5': '/en/guide/migrating-5', + '/guide/overriding-express-api.html': '/en/guide/overriding-express-api', + '/guide/overriding-express-api': '/en/guide/overriding-express-api', + '/guide/routing.html': '/en/guide/routing', + '/guide/routing': '/en/guide/routing', + '/guide/using-middleware.html': '/en/guide/using-middleware', + '/guide/using-middleware': '/en/guide/using-middleware', + '/guide/using-template-engines.html': '/en/guide/using-template-engines', + '/guide/using-template-engines': '/en/guide/using-template-engines', + '/guide/writing-middleware.html': '/en/guide/writing-middleware', + '/guide/writing-middleware': '/en/guide/writing-middleware', + '/resources.html': '/en/resources', + '/resources': '/en/resources', + '/resources/community.html': '/en/resources/community', + '/resources/community': '/en/resources/community', + '/resources/contributing.html': '/en/resources/contributing', + '/resources/contributing': '/en/resources/contributing', + '/resources/glossary.html': '/en/resources/glossary', + '/resources/glossary': '/en/resources/glossary', + '/resources/middleware.html': '/en/resources/middleware', + '/resources/middleware': '/en/resources/middleware', + '/resources/middleware/body-parser.html': '/en/resources/middleware/body-parser', + '/resources/middleware/body-parser': '/en/resources/middleware/body-parser', + '/resources/middleware/compression.html': '/en/resources/middleware/compression', + '/resources/middleware/compression': '/en/resources/middleware/compression', + '/resources/middleware/cookie-parser.html': '/en/resources/middleware/cookie-parser', + '/resources/middleware/cookie-parser': '/en/resources/middleware/cookie-parser', + '/resources/middleware/cookie-session.html': '/en/resources/middleware/cookie-session', + '/resources/middleware/cookie-session': '/en/resources/middleware/cookie-session', + '/resources/middleware/cors.html': '/en/resources/middleware/cors', + '/resources/middleware/cors': '/en/resources/middleware/cors', + '/resources/middleware/errorhandler.html': '/en/resources/middleware/errorhandler', + '/resources/middleware/errorhandler': '/en/resources/middleware/errorhandler', + '/resources/middleware/method-override.html': '/en/resources/middleware/method-override', + '/resources/middleware/method-override': '/en/resources/middleware/method-override', + '/resources/middleware/morgan.html': '/en/resources/middleware/morgan', + '/resources/middleware/morgan': '/en/resources/middleware/morgan', + '/resources/middleware/multer.html': '/en/resources/middleware/multer', + '/resources/middleware/multer': '/en/resources/middleware/multer', + '/resources/middleware/response-time.html': '/en/resources/middleware/response-time', + '/resources/middleware/response-time': '/en/resources/middleware/response-time', + '/resources/middleware/serve-favicon.html': '/en/resources/middleware/serve-favicon', + '/resources/middleware/serve-favicon': '/en/resources/middleware/serve-favicon', + '/resources/middleware/serve-index.html': '/en/resources/middleware/serve-index', + '/resources/middleware/serve-index': '/en/resources/middleware/serve-index', + '/resources/middleware/serve-static.html': '/en/resources/middleware/serve-static', + '/resources/middleware/serve-static': '/en/resources/middleware/serve-static', + '/resources/middleware/session.html': '/en/resources/middleware/session', + '/resources/middleware/session': '/en/resources/middleware/session', + '/resources/middleware/timeout.html': '/en/resources/middleware/timeout', + '/resources/middleware/timeout': '/en/resources/middleware/timeout', + '/resources/middleware/vhost.html': '/en/resources/middleware/vhost', + '/resources/middleware/vhost': '/en/resources/middleware/vhost', + '/resources/utils.html': '/en/resources/utils', + '/resources/utils': '/en/resources/utils', + '/starter/basic-routing.html': '/en/starter/basic-routing', + '/starter/basic-routing': '/en/starter/basic-routing', + '/starter/examples.html': '/en/starter/examples', + '/starter/examples': '/en/starter/examples', + '/starter/faq.html': '/en/starter/faq', + '/starter/faq': '/en/starter/faq', + '/starter/generator.html': '/en/starter/generator', + '/starter/generator': '/en/starter/generator', + '/starter/hello-world.html': '/en/starter/hello-world', + '/starter/hello-world': '/en/starter/hello-world', + '/starter/installing.html': '/en/starter/installing', + '/starter/installing': '/en/starter/installing', + '/starter/static-files.html': '/en/starter/static-files', + '/starter/static-files': '/en/starter/static-files', +}; + +const redirects = { ...blog, ...api_v2, ...pages, ...default_language_pages }; export default redirects;