fix(seo): remplacement re.sub via lambda — titres/descriptions avec backslash ne plantent plus le SSR
Un titre d annonce contenant \2 ou \g<n> etait interprete comme reference de groupe par re.sub (re.PatternError: invalid group reference). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 changed file +2 −2
modified
louka/seo.py
+2 −2
@@ -95,9 +95,9 @@ def _render(*, title: str, description: str, path: str, jsonld: list[dict] | Non | ||
| 95 | 95 | canonical = BASE_URL + path |
| 96 | 96 | page = _shell() |
| 97 | 97 | page = re.sub(r"<title>.*?</title>", |
| 98 | − f"<title>{html.escape(title)}</title>", page, count=1, flags=re.S) | |
| 98 | + lambda _m: f"<title>{html.escape(title)}</title>", page, count=1, flags=re.S) | |
| 99 | 99 | page = re.sub(r'<meta name="description"[^>]*/>', |
| 100 | − f'<meta name="description" content="{html.escape(description, quote=True)}" />', | |
| 100 | + lambda _m: f'<meta name="description" content="{html.escape(description, quote=True)}" />', | |
| 101 | 101 | page, count=1) |
| 102 | 102 | # retire du gabarit statique les meta og:image/twitter (re-injectées ci-dessous) |
| 103 | 103 | page = re.sub(r'\s*<meta (?:property="og:image[^"]*"|name="twitter:(?:card|image)")[^>]*/>', "", page) |
| 104 | 104 | |