diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index a25da17477dd7dff2e0dc5919d6cf57d71c3995d..3e6e8d31a0c8c4ecd7ff3123f97b3f1d3588f12c 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -4942,7 +4942,7 @@ function generer_objet_lien($id_objet, $objet, $longueur = 80, $connect = null)
 	if (!strlen($titre)) {
 		$titre = _T('info_sans_titre');
 	}
-	$url = generer_objet_url($id_objet, $objet, '', '', $connect);
+	$url = generer_objet_url($id_objet, $objet, '', '', null, '', $connect);
 
 	return "<a href='$url' class='$objet'>" . couper($titre, $longueur) . '</a>';
 }
diff --git a/ecrire/inc/lien.php b/ecrire/inc/lien.php
index cada318cd4946b95db6f6a8d541efd5e230b2a3f..99d33ee4261e045eb608d63623323e7e11e45aa1 100644
--- a/ecrire/inc/lien.php
+++ b/ecrire/inc/lien.php
@@ -163,14 +163,14 @@ function traiter_lien_implicite($ref, $texte = '', $pour = 'url', string $connec
 		$url = $f($texte, $id, $type, $args, $ancre, $connect);
 	}
 	if (!$url) {
-		$url = generer_objet_url($id, $type, $args, $ancre, $connect ?: null);
+		$url = generer_objet_url($id, $type, $args, $ancre, null, '', $connect);
 	}
 	if (!$url) {
 		return false;
 	}
 	if (is_array($url)) {
 		[$type, $id] = array_pad($url, 2, null);
-		$url = generer_objet_url($id, $type, $args, $ancre, $connect ?: null);
+		$url = generer_objet_url($id, $type, $args, $ancre, null, '', $connect);
 	}
 	if ($pour === 'url') {
 		return $url;
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 58073eb28ecb4d772f6d8bcc835057e1ee4ec225..28249c82566349a6a780e23590cf584dba807a97 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -1837,17 +1837,19 @@ function charger_fonction_url(string $quoi, string $type = '') {
  *   query_string a placer apres cle=$id&....
  * @param string $ancre
  *   ancre a mettre a la fin de l'URL a produire
- * @param bool|string $public
+ * @param ?bool $public
  *   produire l'URL publique ou privee (par defaut: selon espace)
  *   si string : serveur de base de donnee (nom du connect)
  * @param string $type
  *   fichier dans le repertoire ecrire/urls determinant l'apparence
- * @return string|array
+ * @param string $connect
+ *   fichier dans le repertoire ecrire/urls determinant l'apparence
+ * @return string
  *   url codee ou fonction de decodage
  *   array : derogatoire, la fonction d'url retourne (objet,id_objet) utilises par nettoyer_raccourcis_typo() pour generer un lien titre
  *           (cas des raccourcis personalises [->spip20] : il faut implementer une fonction generer_spip_url et une fonction generer_spip_url_ecrire)
  */
-function generer_objet_url($id = '', $entite = '', $args = '', $ancre = '', $public = null, $type = null) {
+function generer_objet_url(int $id, string $entite, string $args = '', string $ancre = '', ?bool $public = null, string $type = '', string $connect = ''): string {
 	if ($public === null) {
 		$public = !test_espace_prive();
 	}
@@ -1860,7 +1862,7 @@ function generer_objet_url($id = '', $entite = '', $args = '', $ancre = '', $pub
 		if (!function_exists('generer_objet_url_ecrire')) {
 			include_spip('inc/urls');
 		}
-		$res = generer_objet_url_ecrire($entite, $id, $args, $ancre, false);
+		$res = generer_objet_url_ecrire($entite, $id, $args, $ancre, false, $connect);
 	} else {
 		$f = charger_fonction_url('objet', $type ?? '');
 
@@ -1872,21 +1874,20 @@ function generer_objet_url($id = '', $entite = '', $args = '', $ancre = '', $pub
 
 		// mais d'abord il faut tester le cas des urls sur une
 		// base distante
-		if (
-			is_string($public)
+		if ($connect
 			and $g = charger_fonction('connect', 'urls', true)
 		) {
 			$f = $g;
 		}
 
-		$res = $f(intval($id), $entite, $args ?: '', $ancre ?: '', $public);
+		$res = $f(intval($id), $entite, $args ?: '', $ancre ?: '', $connect);
 	}
 	if ($res) {
 		return $res;
 	}
 
 	// On a ete gentil mais la ....
-	spip_log("generer_objet_url: entite $entite ($f) inconnue $type $public");
+	spip_log("generer_objet_url: entite $entite ($f) inconnue $type $public $connect", _LOG_ERREUR);
 
 	return '';
 }
@@ -1896,7 +1897,10 @@ function generer_objet_url($id = '', $entite = '', $args = '', $ancre = '', $pub
  * @see generer_objet_url
  */
 function generer_url_entite($id = '', $entite = '', $args = '', $ancre = '', $public = null, $type = null){
-	return generer_objet_url($id, $entite, $args, $ancre, $public, $type);
+	if ($public and is_string($public)) {
+		return generer_objet_url($id, $entite, $args, $ancre, true, $type ?? '', $public);
+	}
+	return generer_objet_url($id, $entite, $args, $ancre, $public, $type ?? '');
 }
 
 /**
@@ -1977,7 +1981,7 @@ function generer_objet_url_absolue($id = '', $entite = '', $args = '', $ancre =
 	if (!$connect) {
 		$connect = true;
 	}
-	$h = generer_objet_url($id, $entite, $args, $ancre, $connect);
+	$h = generer_objet_url($id, $entite, $args, $ancre, null, '', $connect);
 	if (!preg_match(',^\w+:,', $h)) {
 		include_spip('inc/filtres_mini');
 		$h = url_absolue($h);
diff --git a/ecrire/public/quete.php b/ecrire/public/quete.php
index 4423633ebe554c12253dcbb2baf0b10bffaf5839..ae54c81c3c64f0c252d740e0a8bfceff37bb545a 100644
--- a/ecrire/public/quete.php
+++ b/ecrire/public/quete.php
@@ -597,7 +597,7 @@ function vignette_logo_document($row, string $connect = '') {
 		return '';
 	}
 
-	return generer_objet_url($row['id_document'], 'document', '', '', $connect);
+	return generer_objet_url($row['id_document'], 'document', '', '', null, '', $connect);
 }
 
 /**