Boucle infinie de redirection en cas de surcharge de `urls_arbo_decoder_url_dist`
Sur un site je surcharge urls_arbo_decoder_url_dist
par une fonction urls_arbo_decoder_url
pour propager les utm_
en cas de redirection
function urls_arbo_decoder_url(string $url, string $entite, array $contexte = []): array {
include_spip('urls/arbo');
[$contexte, $entite, $url_redirect, $type] = urls_arbo_decoder_url_dist($url, $entite, $contexte);
if (!is_null($url_redirect)
and !empty($_SERVER['REDIRECT_URL'])
and $_SERVER['REDIRECT_URL'] === "/$url"
and !empty($_SERVER['QUERY_STRING'])
and strpos($_SERVER['QUERY_STRING'], 'utm_') !== false
) {
$url_redirect2 = $url_redirect;
$qs = [];
parse_str($_SERVER['QUERY_STRING'], $qs);
foreach ($qs as $k => $v) {
if (str_starts_with($k, 'utm_')) {
$url_redirect2 = parametre_url($url_redirect2, $k, $v, '&');
}
}
//spip_log("urls_arbo_decoder_url: REDIRECT : ".json_encode([$contexte, $entite, $url_redirect, $type]), 'dbg' . _LOG_DEBUG);
//spip_log("urls_arbo_decoder_url: REDIRECT2 : ".$url_redirect2, 'dbg' . _LOG_DEBUG);
$url_redirect = $url_redirect2;
}
return [$contexte, $entite, $url_redirect, $type];
}
malheureusement, cela provoque des boucles infinies de redirections à cause de la ligne https://git.spip.net/spip/urls_etendues/-/blob/master/urls/arbo.php?ref_type=heads#L820 qui croit qu'elle est appelée par un autre module d'URL