diff --git a/ecrire/inc/lien.php b/ecrire/inc/lien.php
index be057561726ba5f82ca7919ea49810676b9d301f..60dc5c1b9a52ee84558b3b401159e5721233c8f6 100644
--- a/ecrire/inc/lien.php
+++ b/ecrire/inc/lien.php
@@ -282,16 +282,23 @@ function traiter_raccourci_liens($t) {
 	return preg_replace_callback(_EXTRAIRE_LIENS, 'traiter_autoliens', $t);
 }
 
-// Fonction pour les champs chapo commencant par =,  redirection qui peut etre:
-// 1. un raccourci Spip habituel (premier If) [texte->TYPEnnn]
-// 2. un ultra raccourci TYPEnnn voire nnn (article) (deuxieme If)
-// 3. une URL std
-// renvoie une tableau structure comme ci-dessus mais sans calcul d'URL
-// (cf fusion de sauvegardes)
 
 define('_RACCOURCI_CHAPO', '/^(\W*)(\W*)(\w*\d+([?#].*)?)$/');
-
-// http://doc.spip.org/@chapo_redirige
+/**
+ * Fonction pour les champs chapo commencant par =,  redirection qui peut etre:
+ * 1. un raccourci Spip habituel (premier If) [texte->TYPEnnn]
+ * 2. un ultra raccourci TYPEnnn voire nnn (article) (deuxieme If)
+ * 3. une URL std
+ *
+ * renvoie l'url reelle de redirection si le $url=true,
+ * l'url brute contenue dans le chapo sinon
+ *
+ * http://doc.spip.org/@chapo_redirige
+ *
+ * @param string $chapo
+ * @param bool $url
+ * @return string
+ */
 function chapo_redirige($chapo, $url=false)
 {
 	if (!preg_match(_RACCOURCI_LIEN, $chapo, $m))
diff --git a/ecrire/public/parametrer.php b/ecrire/public/parametrer.php
index 2f567f084c36fb946ddfdde33aaf5587d524b5d2..6e62e94aa2bfe075f90b8962d23732a92f2aa6d1 100644
--- a/ecrire/public/parametrer.php
+++ b/ecrire/public/parametrer.php
@@ -177,11 +177,18 @@ function public_parametrer_dist($fond, $contexte='', $cache='', $connect='')  {
 }
 
 
-// si le champ chapo commence par '=' c'est une redirection.
-// avec un eventuel raccourci Spip
-// si le raccourci a un titre il sera pris comme corps du 302
-
-// http://doc.spip.org/@tester_redirection
+/**
+ * si le champ chapo commence par '=' c'est une redirection.
+ * avec un eventuel raccourci Spip
+ * si le raccourci a un titre il sera pris comme corps du 302
+ *
+ * http://doc.spip.org/@tester_redirection
+ *
+ * @param string $fond
+ * @param array $contexte
+ * @param string $connect
+ * @return array|bool
+ */
 function tester_redirection($fond, $contexte, $connect)
 {
 	if ($fond == 'article'
@@ -190,14 +197,23 @@ function tester_redirection($fond, $contexte, $connect)
 		if ($m[0]=='=') {
 			include_spip('inc/texte');
 			// les navigateurs pataugent si l'URL est vide
-			if ($url = chapo_redirige(substr($m,1), true))
+			if ($url = chapo_redirige(substr($m,1), true)){
+				// passer en url absolue car cette redirection pourra
+				// etre utilisee dans un contexte d'url qui change
+				// y compris url arbo
+				if (!preg_match(',^\w+:,', $url)) {
+					include_spip('inc/filtres_mini');
+					$url = url_absolue($url);
+				}
+				$url = str_replace('&', '&', $url);
 				return array('texte' => "<"
 				. "?php header('Location: "
-				. texte_script(str_replace('&amp;', '&', $url))
+				. texte_script($url)
 				. "'); echo '"
-				.  addslashes($m[1])
-				. "'?" . ">",
+				.  addslashes($url)
+				. "'.\"\n\"?" . ">",
 					'process_ins' => 'php');
+			}
 		}
 	}
 	return false;