diff --git a/addons/website/models/website.py b/addons/website/models/website.py
index 8b01d038805..1327c6af2a6 100644
--- a/addons/website/models/website.py
+++ b/addons/website/models/website.py
@@ -1327,7 +1327,7 @@ class Website(models.Model):
router = http.root.get_db_router(request.db).bind('')
path = router.build(rule.endpoint, args)
if lang != self.default_lang_id:
- path = f'/{lang.url_code}{path}'
+ path = f'/{lang.url_code}{path if path != "/" else ""}'
except (NotFound, AccessError, MissingError):
# The build method returns a quoted URL so convert in this case for consistency.
path = urls.url_quote_plus(request.httprequest.environ['REQUEST_URI'], safe='/')
diff --git a/addons/website/tests/test_base_url.py b/addons/website/tests/test_base_url.py
index 171dfc35c1d..40335dcb7b4 100644
--- a/addons/website/tests/test_base_url.py
+++ b/addons/website/tests/test_base_url.py
@@ -85,7 +85,7 @@ class TestBaseUrl(TestUrlCommon):
self._assertCanonical('/?debug=1', self.website.get_base_url() + '/')
self._assertCanonical('/a-page', self.website.get_base_url() + '/a-page')
self._assertCanonical('/en_US', self.website.get_base_url() + '/')
- self._assertCanonical('/fr_FR', self.website.get_base_url() + '/fr/')
+ self._assertCanonical('/fr_FR', self.website.get_base_url() + '/fr')
@odoo.tests.tagged('-at_install', 'post_install')
diff --git a/addons/website/tests/test_lang_url.py b/addons/website/tests/test_lang_url.py
index 6ae29b49310..f655880fe99 100644
--- a/addons/website/tests/test_lang_url.py
+++ b/addons/website/tests/test_lang_url.py
@@ -24,7 +24,7 @@ class TestLangUrl(HttpCase):
def test_01_url_lang(self):
with MockRequest(self.env, website=self.website):
- self.assertEqual(url_lang('', '[lang]'), '/[lang]/mockrequest/', "`[lang]` is used to be replaced in the url_return after installing a language, it should not be replaced or removed.")
+ self.assertEqual(url_lang('', '[lang]'), '/[lang]/mockrequest', "`[lang]` is used to be replaced in the url_return after installing a language, it should not be replaced or removed.")
def test_02_url_redirect(self):
url = '/fr_WHATEVER/contactus'
diff --git a/addons/website/tools.py b/addons/website/tools.py
index 3dbd0d7c582..87337c7e0b8 100644
--- a/addons/website/tools.py
+++ b/addons/website/tools.py
@@ -14,7 +14,7 @@ from odoo.tools.misc import DotDict, frozendict
@contextlib.contextmanager
def MockRequest(
- env, *, path='/mockrequest/', routing=True, multilang=True,
+ env, *, path='/mockrequest', routing=True, multilang=True,
context=frozendict(), cookies=frozendict(), country_code=None,
website=None, remote_addr=HOST, environ_base=None,
# website_sale
diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml
index 20ce8c7c17a..db3e44e7e42 100644
--- a/addons/website/views/website_templates.xml
+++ b/addons/website/views/website_templates.xml
@@ -106,18 +106,18 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+