diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php
index 15decac98d4440625d9f807e0f22730d1ccf12c9..1686e0f15ab54e83d4ef36f5253ced3ccfdbd920 100644
--- a/ecrire/public/assembler.php
+++ b/ecrire/public/assembler.php
@@ -198,7 +198,7 @@ function stop_inclure($fragment) {
 	}
 }
 // http://doc.spip.org/@inclure_page
-function inclure_page($fond, $contexte_inclus, $cache_incluant='') {
+function inclure_page($fond, $contexte_inclus) {
 	global $lastmodified;
 
 	// Si un fragment est demande et deja obtenu, inutile de continuer a inclure
@@ -211,10 +211,9 @@ function inclure_page($fond, $contexte_inclus, $cache_incluant='') {
 
 	// Si on a inclus sans fixer le critere de lang, on prend la langue courante
 	if (!isset($contexte_inclus['lang']))
-		$contexte_inclus['lang'] = ($langue_courante ? $langue_courante :  $GLOBALS['spip_lang']);
+		$contexte_inclus['lang'] = $GLOBALS['spip_lang'];
 
 	if ($contexte_inclus['lang'] != $GLOBALS['meta']['langue_site']) {
-		include_spip('inc/lang');
 		lang_select($lang);
 		$lang_select = true; // pour lang_dselect en sortie
 	}
@@ -237,12 +236,14 @@ function inclure_page($fond, $contexte_inclus, $cache_incluant='') {
 		$f = charger_fonction('parametrer', 'public');
 		$page = $f($fond, $contexte_inclus, $chemin_cache);
 		$lastmodified = time();
-		if ($chemin_cache) 
+		if ($chemin_cache)
 			$fcache($contexte_inclus, $use_cache, $chemin_cache, $page, $lastmodified);
 	}
 	if($lang_select)
 		lang_dselect();
 
+#print_r($contexte_inclus);print_r($page);exit;
+
 	return $page;
 }
 
diff --git a/ecrire/public/cacher.php b/ecrire/public/cacher.php
index 54b03ccd02f7326ad94be7275a77ed5c0110c393..ecdb1c1512067db30affafab2410deca22e3f718 100644
--- a/ecrire/public/cacher.php
+++ b/ecrire/public/cacher.php
@@ -262,12 +262,13 @@ function nettoyer_petit_cache($prefix, $duree = 300) {
 //	> 0 s'il faut calculer la page et la mette en cache use_cache secondes
 // - chemin_cache qui est le chemin d'acces au fichier ou vide si pas cachable
 // - page qui est le tableau decrivant la page, si le cache la contenait
-// - lastmodifed qui vaut la date de derniere modif du fichier.
+// - lastmodified qui vaut la date de derniere modif du fichier.
 
 // http://doc.spip.org/@public_cacher_dist
 function public_cacher_dist($contexte, &$use_cache, &$chemin_cache, &$page, &$lastmodified) {
 
 	if ($chemin_cache) return creer_cache($page, $chemin_cache, $use_cache);
+
 	// cas ignorant le cache car complement dynamique
 	if ($_SERVER['REQUEST_METHOD'] == 'POST') {
 		$use_cache = -1;
@@ -308,20 +309,17 @@ function public_cacher_dist($contexte, &$use_cache, &$chemin_cache, &$page, &$la
 		 || @file_exists(_ACCESS_FILE_NAME))) {
 			supprimer_fichier(_DIR_CACHE . $chemin_cache);
 	}
-	// cas sans jamais de cache car calul d'un fond depuis l'espace prive
-	if ((_DIR_RESTREINT!=_DIR_RESTREINT_ABS)&&
-	    (isset($_COOKIE['spip_session'])
-	    || isset($_COOKIE['spip_admin']) )){
-			supprimer_fichier(_DIR_CACHE . $chemin_cache);
+
+	if ($ok = lire_fichier(_DIR_CACHE . $chemin_cache, $page)) {
+		$lastmodified = @file_exists(_DIR_CACHE . $chemin_cache) ?
+			@filemtime(_DIR_CACHE . $chemin_cache) : 0;
+		$page = restaurer_meta_donnees ($page);
+		$use_cache = cache_valide_autodetermine($chemin_cache, $page, $lastmodified);
+		if (!$use_cache) return;
+	} else {
+		$use_cache = 1;
 	}
-	
-	$ok = lire_fichier(_DIR_CACHE . $chemin_cache, $page);
-	$lastmodified = @file_exists(_DIR_CACHE . $chemin_cache) ?
-		@filemtime(_DIR_CACHE . $chemin_cache) : 0;
-	$page = restaurer_meta_donnees ($page);
-	$use_cache = cache_valide_autodetermine($chemin_cache, $page, $lastmodified);
-
-	if (!$use_cache AND $ok) return;
+
 
 	// tester si la base est dispo
 	spip_connect();
diff --git a/ecrire/public/parametrer.php b/ecrire/public/parametrer.php
index 4d7be3de630d456e98fc3b60850fc2374553544a..60e0793b3dd5c686361771f33165cc894e143d64 100644
--- a/ecrire/public/parametrer.php
+++ b/ecrire/public/parametrer.php
@@ -255,38 +255,37 @@ function sql_accepter_forum($id_article) {
 function public_parametrer_dist($fond, $local='', $cache='')  {
 
 	// distinguer le premier appel des appels par inclusion
-	if (!is_array($local)) { 
+	if (!is_array($local)) {
 		global $contexte;
-	// ATTENTION, gestion des URLs personnalises (propre etc):
-	// 1. $contexte est global car cette fonction le modifie.
-	// 2. $fond est passe par reference, pour la meme raison
-	// Bref,  les URL dites propres ont une implementation sale.
-	// Interdit de nettoyer, faut assumer l'histoire.
+		// ATTENTION, gestion des URLs personnalises (propre etc):
+		// 1. $contexte est global car cette fonction le modifie.
+		// 2. $fond est passe par reference, pour la meme raison
+		// Bref,  les URL dites propres ont une implementation sale.
+		// Interdit de nettoyer, faut assumer l'histoire.
 		include_spip('inc/filtres'); // pour normaliser_date
 		$contexte = calculer_contexte();
 		if (function_exists("recuperer_parametres_url")) {
 			recuperer_parametres_url($fond, nettoyer_uri());
-	// remettre les globales (bouton "Modifier cet article" etc)
+			// remettre les globales (bouton "Modifier cet article" etc)
 			foreach ($contexte as $var=>$val) {
 				if (substr($var,0,3) == 'id_') $GLOBALS[$var] = $val;
 			}
 		}
-	        $local = $contexte;
-	}
-
-	// si le champ chapo commence par '=' c'est une redirection.
-
-	if ($fond == 'article'
-	AND $id_article = intval($local['id_article'])) {
-		if ($chapo = sql_chapo($id_article)) {
-			if (preg_match(',^=(\[->)?(.*?)[]]?$,', $chapo, $url)){
-				include_spip('inc/texte');
-				$url = calculer_url($url[2]);
-				if ($url) { // sinon les navigateurs pataugent
-					$url = texte_script(str_replace('&', '&', $url));
-					return array('texte' => "<".
-					"?php redirige_par_entete('$url'); ?" . ">",
-					'process_ins' => 'php');
+		$local = $contexte;
+
+		// si le champ chapo commence par '=' c'est une redirection.
+		if ($fond == 'article'
+		AND $id_article = intval($local['id_article'])) {
+			if ($chapo = sql_chapo($id_article)) {
+				if (preg_match(',^=(\[->)?(.*?)[]]?$,', $chapo, $url)){
+					include_spip('inc/texte');
+					$url = calculer_url($url[2]);
+					if ($url) { // sinon les navigateurs pataugent
+						$url = texte_script(str_replace('&amp;', '&', $url));
+						return array('texte' => "<".
+						"?php redirige_par_entete('$url'); ?" . ">",
+						'process_ins' => 'php');
+					}
 				}
 			}
 		}
@@ -327,7 +326,8 @@ function public_parametrer_dist($fond, $local='', $cache='')  {
 			 join(", ", $local)
 			.' ('.strlen($page['texte']).' octets)'
 		);
-	} else 	$page = array();
+	} else
+		$page = array();
 
 	if ($GLOBALS['var_mode'] == 'debug') {
 		include_spip('public/debug');