From a6a83b6d6258cd8d197bebb616fa4b7f6b0424a7 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Thu, 9 Jun 2022 08:01:52 +0000 Subject: [PATCH] [FIX] website: fix / optimize canonical url MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Homepage was never considered as canonical due to the trailing / domain.com/fr/ != domain.com/fr Now _get_canonical_url_localized for homepage is fixed. Remove all computation related to canonical that is usless for connected user. It is mainly used for SEO tools/bots/crawler. Initially planed for 13.0 with [1] but reverted with [2]. [1]: https://github.com/odoo/odoo/commit/33167b3928c767a08fdc7eedc3e6204aac9cac08 [2]: https://github.com/odoo/odoo/commit/deb23450f18196c7f8d9e819db603fccd407b82a closes odoo/odoo#94289 X-original-commit: 375abe5e369b59a57b352d68d4835f2ef275b560 Signed-off-by: Romain Derie (rde) Signed-off-by: Jérémy Kersten --- addons/website/models/website.py | 2 +- addons/website/tests/test_base_url.py | 2 +- addons/website/tests/test_lang_url.py | 2 +- addons/website/tools.py | 2 +- addons/website/views/website_templates.xml | 18 +++++++++--------- 5 files changed, 13 insertions(+), 13 deletions(-) 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 @@ - - - - - - - - + + + + + + + + - +