diff --git a/.gitattributes b/.gitattributes
index 15f55a8e1dfca7ff766c0c788e75a223d378dad2..23a5c93a9cf15c071cf4327bfe3c74c9511911ae 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -150,6 +150,7 @@ ecrire/configuration/relayeur.php -text
 ecrire/configuration/rubriques.php -text
 ecrire/configuration/syndications.php -text
 ecrire/configuration/transcodeur.php -text
+ecrire/configuration/type_urls.php -text
 ecrire/configuration/versionneur.php -text
 ecrire/configuration/visiteurs.php -text
 ecrire/exec/accueil.php -text
diff --git a/ecrire/configuration/compresseur.php b/ecrire/configuration/compresseur.php
index e6131336d09dd70523dee00263795d0ceba31793..75ffdcde07950f4ef73d39a80ae42537fdd06091 100644
--- a/ecrire/configuration/compresseur.php
+++ b/ecrire/configuration/compresseur.php
@@ -89,86 +89,9 @@ function configuration_compresseur_dist()
 		. fin_cadre_relief(true);
 
 
-/*
--- Compression du flux HTTP --
 
-SPIP peut compresser automatiquement chaque page qu'il envoie aux
-visiteurs du site. Ce réglage permet d'optimiser la bande passante (le
-site est plus rapide derrière une liaison à faible débit), mais
-demande plus de puissance au serveur. (Pour plus de détails, cf.
-[->http://www.php.net/ob_gzhandler].)
 
-Voulez-vous activer la compression du flux HTTP ?
-
-() oui
-(x) non
-
-
-
-
--- Traitement du HTML --
-
-(TODO, avec tidy)
-
-La commande "tidy" permet d'éliminer tous les espaces superflus des
-pages HTML produites, de façon à limiter la taille en octets du
-contenu envoyé. Elle offre aussi la possibilité de nettoyer le code
-HTML de manière à garantir qu'il est strictement conforme au standard
-XHTML 1.0.
-
-A noter : avec des squelettes conformes, SPIP produit du code conforme
-sans qu'il soit nécessaire de faire appel à tidy. De plus, ces deux
-options demandent un peu de puissance au serveur.
-
-Voulez-vous supprimer les espaces superflus des pages HTML ?
-
-() oui
-(x) non
-
-Souhaitez-vous faire appel à tidy garantir la conformité du code HTML ?
-
-() oui
-(x) non
-
-
-
--- Compactage des scripts et css --
-
-SPIP peut compacter les scripts javascript et les feuilles de style
-CSS, pour les enregistrer dans des fichiers statiques ; cela accélère
-grandement l'affichage, au détriment toutefois de la lisibilité du
-code. De plus, certains scripts ou CSS peuvent s'avérer incompatibles
-avec ce traitement (le cas échéant, vous pourrez les désactiver
-individuellement).
-
-Compacter les scripts ?
-() oui
-(x) non
-
-Compacter les feuilles de style ?
-() oui
-(x) non
-
-
-[si oui :]
-SPIP a compacté les scripts et feuilles de style suivants. Si certains
-ne doivent pas être compactés, veuillez le signaler ci-dessous :
-
-page=jquery.js []
-plugins/thickbox/thickbox.js []
-squelettes/toto.css [x]
-...
-
-(Note: seuls les scripts rencontrés dans la journée qui précède sont
-mémorisés, ainsi que ceux qui sont interdits.)
-
-../..
-
-*/
-
-
-
-	$res = debut_cadre_trait_couleur("", true, "",
+	$res = '<br />'.debut_cadre_trait_couleur("", true, "",
 		_T('info_compresseur_titre'))
 	.  ajax_action_post('configurer', 'compresseur', 'config_fonctions', '', $res)
 	.  fin_cadre_trait_couleur(true);
diff --git a/ecrire/configuration/type_urls.php b/ecrire/configuration/type_urls.php
new file mode 100644
index 0000000000000000000000000000000000000000..fc04ff26498f8be1bf1cbb07290056bf31e362dc
--- /dev/null
+++ b/ecrire/configuration/type_urls.php
@@ -0,0 +1,63 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2008                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/presentation');
+include_spip('inc/config');
+
+function configuration_type_urls_dist()
+{
+	global $spip_lang_right;
+
+	$res = '';
+
+	// Choix du type d'url
+	if ($GLOBALS['type_urls'] != 'page') // fixe par mes_options
+		return '';
+
+	$res .= debut_cadre_relief("", true, "", _L('Type d\'adresses URL'))
+		.  "<p class='verdana2'>"
+		. _L('Vous pouvez choisir ci-dessous le mode de calcul de l\'adresse des pages.')
+		. " "
+		. "</p>"
+
+		. "<div class='verdana2'>"
+		. afficher_choix('type_urls',
+			$GLOBALS['meta']['type_urls'],
+			array(
+				'page' => '<em>page</em> &mdash; <tt>spip.php?article12</tt>',
+				'html' => '<em>html</em> &mdash; <tt>article12.html</tt>',
+				'arbo' => '<em>arbo</em> &mdash; <tt>/article/Titre</tt>',
+				'propres' => '<em>propres</em> &mdash; <tt>Titre-de-l-article</tt>',
+				'propres2' => '<em>propres2</em> &mdash; <tt>Titre-de-l-article.html</tt>'
+#				'propresqs' => '<em>propresqs</em> &mdash; <tt>?Titre-de-l-article</tt>', // ne fonctionne plus
+			)
+		)
+		. "</div>"
+
+		. "<p><em>"._L('Attention ce r&#233;glage ne fonctionnera que si le fichier <tt>.htaccess</tt> est correctement install&#233; &#224; la racine du site.')."</em></p>"
+
+
+		. fin_cadre_relief(true);
+
+
+
+
+	$res = '<br />'.debut_cadre_trait_couleur("", true, "",
+		_T('info_compresseur_titre'))
+	.  ajax_action_post('configurer', 'type_urls', 'config_fonctions', '', $res)
+	.  fin_cadre_trait_couleur(true);
+
+	return ajax_action_greffe("configurer-type_urls", '', $res);
+}
+?>
diff --git a/ecrire/exec/config_fonctions.php b/ecrire/exec/config_fonctions.php
index e0cfb902ce85696f423b823669a349e7d492d8b9..a836d9d692eb782dd228e4a5393499afbd12b158 100644
--- a/ecrire/exec/config_fonctions.php
+++ b/ecrire/exec/config_fonctions.php
@@ -46,6 +46,7 @@ function exec_config_fonctions_dist()
 	$versionneur = charger_fonction('versionneur', 'configuration');
 	$previsualiseur = charger_fonction('previsualiseur', 'configuration');
 	$relayeur = charger_fonction('relayeur', 'configuration');
+	$type_urls = charger_fonction('type_urls', 'configuration');
 	$compresseur = charger_fonction('compresseur', 'configuration');
 
 	echo 
@@ -64,6 +65,8 @@ function exec_config_fonctions_dist()
 
 	  $relayeur(_request('retour_proxy')), // Proxy pour syndication & doc
 
+	  $type_urls(), // Choix de type_urls
+
 	  $compresseur(), // Compression http et compactages CSS ou JS
 
 	'';
diff --git a/ecrire/inc/config.php b/ecrire/inc/config.php
index 85e59b95070578e0baa4e27c410e693eff2bfa81..31e06b0db6f5a586b6b749561ed6151e879cc578 100644
--- a/ecrire/inc/config.php
+++ b/ecrire/inc/config.php
@@ -96,6 +96,8 @@ function liste_metas()
 		'gerer_trad' => 'non',
 		'langues_multilingue' => '',
 
+		'type_urls' => 'page',
+
 		'email_envoi' => '',
 		'email_webmaster' => '',
 		'auto_compress_http'=>'non',
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index f3adc982a09d1730a8dae7ea69e6e227c7db6c91..6233a6661ebf317966fcde8897f2a858d328b3a3 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -715,8 +715,8 @@ function autoriser_sans_cookie($nom)
   return in_array($nom, $autsanscookie);
 }
 
-// Cette fonction charge le bon inc-urls selon qu'on est dans l'espace
-// public ou prive, la presence d'un (old style) inc-urls.php3, etc.
+// Cette fonction charge le bon fichier d'urls selon qu'on est dans l'espace
+// public ou prive
 // http://doc.spip.org/@charger_generer_url
 function charger_generer_url($prive=NULL) {
 	static $ok;
@@ -730,13 +730,12 @@ function charger_generer_url($prive=NULL) {
 	// espace public
 	else {
 		if ($ok++) return; # fichier deja charge
-		// fichier inc-urls ? (old style)
-		if (@is_readable($f = _DIR_RACINE.'inc-urls.php3')
-		OR @is_readable($f = _DIR_RACINE.'inc-urls.php')
-		OR $f = find_in_path('inc-urls-'.$GLOBALS['type_urls'].'.php3'))
-			include_once($f);
 
-		else include_spip('urls/'.$GLOBALS['type_urls']);
+		if ($GLOBALS['type_urls'] == 'page'
+		AND $GLOBALS['meta']['type_urls'])
+			$GLOBALS['type_urls'] = $GLOBALS['meta']['type_urls'];
+
+		include_spip('urls/'.$GLOBALS['type_urls']);
 	}
 }
 
diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index 53b93c98ec654429ee8a0e572500fb635f1451c0..a703493ccbda9307ea2f49d520eb8d05a7c8094c 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -108,11 +108,12 @@ $filtrer_javascript = 0;
 // PS: dans les forums, petitions, flux syndiques... c'est *toujours* securise
 
 // Type d'URLs
-// 'page': spip.php?article123 [c'est la valeur par defaut pour SPIP 1.9]
+// 'page': spip.php?article123 [c'est la valeur par defaut pour SPIP 2.0]
 // 'html': article123.html
-// 'propres': Titre-de-l-article <http://lab.spip.net/spikini/UrlsPropres>
+// 'propres': Titre-de-l-article
 // 'propres2' : Titre-de-l-article.html (base sur 'propres')
-$type_urls = 'page';
+// 'arbo' : /article/Titre
+$type_urls = 'page'; // 'page' => surcharge possible par configuration
 
 #la premiere date dans le menu deroulant de date de publication
 # null: automatiquement (affiche les 8 dernieres annees)
diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php
index 898e8102c6f368f7df35dff3a2815fcaf81ebc7a..29d4e53ac8998bbb54a10277a9845adb3fa4fa7a 100644
--- a/ecrire/public/assembler.php
+++ b/ecrire/public/assembler.php
@@ -783,8 +783,11 @@ function xml_hack(&$page, $echap = false) {
 
 // http://doc.spip.org/@page_base_href
 function page_base_href(&$texte){
-	if (defined('_SET_HTML_BASE')
-	AND _SET_HTML_BASE
+	if (!defined('_SET_HTML_BASE'))
+		define('_SET_HTML_BASE',
+			$GLOBALS['meta']['type_urls'] == 'arbo');
+
+	if (_SET_HTML_BASE
 	AND $GLOBALS['html']
 	AND $GLOBALS['profondeur_url']>0){
 		list($head, $body) = explode('</head>', $texte, 1);
diff --git a/ecrire/public/parametrer.php b/ecrire/public/parametrer.php
index 1a879cea0ccf309e933fe0ab7dc683c91f49d98c..ee47db2dfdc3b14dcfc19b3552ebb5487eceeb0e 100644
--- a/ecrire/public/parametrer.php
+++ b/ecrire/public/parametrer.php
@@ -263,6 +263,9 @@ function public_parametrer_dist($fond, $local='', $cache='', $connect='')  {
 	// verifier que la fonction assembler est bien chargee (cf. #608)
 	$assembler = charger_fonction('assembler', 'public');
 	// et toujours charger les fonctions de generation d'URL.
+	if ($GLOBALS['type_urls'] == 'page'
+	AND $GLOBALS['meta']['type_urls'])
+		$GLOBALS['type_urls'] = $GLOBALS['meta']['type_urls'];
 	$renommer_urls= charger_fonction($GLOBALS['type_urls'], 'urls', true);
 	// distinguer le premier appel des appels par inclusion
 	if (!is_array($local)) {