diff --git a/ecrire/inc.php3 b/ecrire/inc.php3
index 8e8340f3b1c9148cc5f7b6522a673d95b809c3b0..fb55bd0e6c13c9c04a36ccac31420b607ce81a8d 100644
--- a/ecrire/inc.php3
+++ b/ecrire/inc.php3
@@ -21,9 +21,10 @@ preg_match(',^[0-9a-z_]*$,i', $_GET['exec']))
 	$exec = $_GET['exec'];
  else $exec = $SCRIPT_NAME;
 
-if (autoriser_sans_cookie($exec))
+if (autoriser_sans_cookie($exec)) {
 	unset($GLOBALS['_COOKIE']);
-else {
+	if (!isset($reinstall)) $reinstall = 'non';
+ } else {
 	include_ecrire ("inc_session");
 	include_ecrire('inc_cookie');
 	$var_f = include_fonction('auth');
diff --git a/ecrire/inc_spip_action_test_dirs.php b/ecrire/inc_spip_action_test_dirs.php
index 4cc616d0cb19a9e07270b408b8eb2c6059157704..78e6a6b9e0f02d7d22c564210ae391469db134f4 100644
--- a/ecrire/inc_spip_action_test_dirs.php
+++ b/ecrire/inc_spip_action_test_dirs.php
@@ -105,7 +105,7 @@ if ($bad_dirs OR $absent_dirs) {
 
  } else {
 	if (!_FILE_CONNECT)
-		header("Location: " . generer_url_ecrire("install",  "etape=1"));
+	  header("Location: " . generer_url_ecrire("install",  "etape=1", true));
 	else
 		header("Location: " . _DIR_RESTREINT_ABS);
  }
diff --git a/ecrire/inc_utils.php b/ecrire/inc_utils.php
index 206a92d0bc8c245bb538cce7903465c8ebebe932..b090181f45e576e46997685a534f91a20b984714 100644
--- a/ecrire/inc_utils.php
+++ b/ecrire/inc_utils.php
@@ -614,17 +614,23 @@ function charger_generer_url() {
 // Bravo au W3C qui n'a pas ete capable de nous eviter ca
 // faute de separer proprement langage et meta-langage
 
+// Ecriture tres tarabiscotee pour assurer la transition php3 & mutualisation
+
 function generer_url_ecrire($script, $args="", $no_entities=false) {
 	$site = $GLOBALS['meta']["adresse_site"];
 	if ($site)
 	  $site .= ((substr($site,-1) <> '/') ? '/' : '') . _DIR_RESTREINT_ABS;
 	else $site =  _DIR_RESTREINT;
 
-	if (substr($site,-1) == '/') $site = substr($site, 0, -1);
-	if (!$no_entities) $args = str_replace('&', '&amp;', $args);
+	if (substr($site,-1) == '/') {
+		$site = substr($site, 0, -1);
+		$script = '/' . $script;
+	}
+
 	$ext=(ereg('.php[3]?$', $script) ? '' :_EXTENSION_PHP).($args ? '?' : "");
+	if (!$no_entities) $args = str_replace('&', '&amp;', $args);
 
-	return "$site/$script$ext$args";
+	return "$site$script$ext$args";
 }
 
 // scripts publics appeles a partir de l'espace prive ou de l'exterieur (mail)