diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index b5ecb3fd5f4f9de7ef5c0baf3cb40c7cbd807749..1d91972e01665c09221f9fddb5669b69c6a5fe79 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -734,8 +734,12 @@ function charger_generer_url() {
 // Fonctions de fabrication des URL des scripts de Spip
 //
 
-// l'URL de base du site, sans se fier a meta(adresse_site) qui peut etre fausse
-// (sites a plusieurs noms d'hotes, deplacements, erreurs)
+// l'URL de base du site, sans se fier a meta(adresse_site) qui
+// peut etre fausse (sites a plusieurs noms d'hotes, deplacements, erreurs)
+// Note : la globale $profondeur_url doit etre initialisee de maniere a
+// indiquer le nombre de sous-repertoires de l'url courante par rapport a la
+// racine de SPIP : par exemple, sur ecrire/ elle vaut 1, sur sedna/ 1, et a
+// la racine 0. Sur url/perso/ elle vaut 2
 function url_de_base() {
 	global $REQUEST_URI;
 
@@ -751,8 +755,11 @@ function url_de_base() {
 	# note : HTTP_HOST contient le :port si necessaire
 	$myself = $http.'://'.$_SERVER['HTTP_HOST'].$REQUEST_URI;
 
-	# supprimer (ecrire/)?xxxxx
-	$url = preg_replace(',/('._DIR_RESTREINT_ABS.')?[^/]*$,', '/', $myself);
+	# supprimer n sous-repertoires
+	$supprime_preg = '/+';
+	for ($i=0; $i<$GLOBALS['profondeur_url']; $i++)
+		$supprime_preg .= '[^/]+/+';
+	$url = preg_replace(','.$supprime_preg.'[^/]*$,', '/', $myself);
 	return $url;
 }
 
diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index cf56404fd1d5f161d407d46feef927326f6cafc3..a4fff7a55250ce159d5e5ee1ae5186b50506dc32 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -210,7 +210,7 @@ $auteur_session = '';
 $connect_statut = '';
 $hash_recherche = '';
 $hash_recherche_strict = '';
-
+$profondeur_url = 0;
 
 
 //
diff --git a/ecrire/index.php b/ecrire/index.php
index bd56b69cfa593a3c97bec24f34c7339f314fc51e..ced7e2dc555a7f2bc7f979ffe5a5ef347411efe8 100644
--- a/ecrire/index.php
+++ b/ecrire/index.php
@@ -60,7 +60,11 @@ $GLOBALS['couleurs_spip'] = array(
 );
 
 
-if (!defined('_ECRIRE_INC_VERSION')) include ("inc_version.php");
+if (!defined('_ECRIRE_INC_VERSION')) {
+	include 'inc_version.php';
+}
+$GLOBALS['profondeur_url']=1;
+
 include_spip('inc/cookie');
 
 //