diff --git a/htaccess-propres.txt b/htaccess-propres.txt
index d8951f82f351ee06e06f76409b80ed8cb501d4c2..6478b40bdc41230ade8340840260dbd2cd15286e 100644
--- a/htaccess-propres.txt
+++ b/htaccess-propres.txt
@@ -12,6 +12,16 @@ RewriteEngine On
 ### si votre site est en sous-domaine, preciser ci-dessous
 # RewriteBase /sous/domaine/
 
+###
+# Compatibilite avec les URLS "html" (pour transition sympa)
+RewriteRule ^rubrique([0-9]+)\.html$	rubrique.php3?id_rubrique=$1 [QSA,L]
+RewriteRule ^article([0-9]+)\.html$		article.php3?id_article=$1 [QSA,L]
+RewriteRule ^breve([0-9]+)\.html$		breve.php3?id_breve=$1 [QSA,L]
+RewriteRule ^mot([0-9]+)\.html$			mot.php3?id_mot=$1 [QSA,L]
+RewriteRule ^auteur([0-9]+)\.html$		auteur.php3?id_auteur=$1 [QSA,L]
+# Fin compatibilite
+###
+
 # Rediriger les mots et breves sans le "+" final
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
@@ -37,16 +47,8 @@ RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^_[^/\.]+(\.html)?$ auteur.php3 [QSA,E=url_propre:$0,L]
 
-# Les articles
+# Les articles (en dernier car expression plus "large")
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^[^/\.]+(\.html)?$ article.php3 [QSA,E=url_propre:$0,L]
 
-
-###
-# Compatibilite avec les URLS "html" (pour transition sympa)
-RewriteRule ^rubrique([0-9]+)\.html$	rubrique.php3?id_rubrique=$1 [QSA,L]
-RewriteRule ^article([0-9]+)\.html$		article.php3?id_article=$1 [QSA,L]
-RewriteRule ^breve([0-9]+)\.html$		breve.php3?id_breve=$1 [QSA,L]
-RewriteRule ^mot([0-9]+)\.html$			mot.php3?id_mot=$1 [QSA,L]
-RewriteRule ^auteur([0-9]+)\.html$		auteur.php3?id_auteur=$1 [QSA,L]
diff --git a/inc-urls-html.php3 b/inc-urls-html.php3
index 4a0eb8e45add937b67b5067a12f1fe5dadf8fcce..3dad37274609c396874750f6480211d742706716 100644
--- a/inc-urls-html.php3
+++ b/inc-urls-html.php3
@@ -66,6 +66,29 @@ function generer_url_document($id_document) {
 
 function recuperer_parametres_url($fond, $url) {
 	global $contexte;
+
+
+	/*
+	 * Le bloc qui suit sert a faciliter les transitions depuis
+	 * le mode 'urls-propres' vers les modes 'urls-standard' et 'url-html'
+	 * Il est inutile de le recopier si vous personnalisez vos URLs
+	 * et votre .htaccess
+	 */
+	// Si on est revenu en mode html, mais c'est une ancienne url_propre
+	// on ne redirige pas, on assume le nouveau contexte (si possible)
+	if ($url_propre = $GLOBALS['_SERVER']['REDIRECT_url_propre']
+	OR $url_propre = $GLOBALS['HTTP_ENV_VARS']['url_propre']
+	AND preg_match(',^(article|breve|rubrique|mot|auteur)$,', $fond)) {
+		$url_propre = preg_replace('/^[_+-]{0,2}(.*?)[_+-]{0,2}(\.html)?$/',
+			'$1', $url_propre);
+		if ($r = spip_query("SELECT id_$fond AS id FROM spip_".$fond."s
+		WHERE url_propre = '".addslashes($url_propre)."'")
+		AND $t = spip_fetch_array($r))
+			$contexte["id_$fond"] = $t['id'];
+	}
+	/* Fin du bloc compatibilite url-propres */
+
+
 	return;
 }
 
diff --git a/inc-urls-propres.php3 b/inc-urls-propres.php3
index c0cceeea6b8cc1c1e904dcf2742c1161828698b3..82314784730b647f3af14c49661f40f55d33a664 100644
--- a/inc-urls-propres.php3
+++ b/inc-urls-propres.php3
@@ -39,8 +39,15 @@ function _generer_url_propre($type, $id_objet) {
 	$table = "spip_".$type."s";
 	$col_id = "id_".$type;
 
+	// Auteurs : on prend le nom
+	if ($type == 'auteur')
+		$champ_titre = 'nom AS titre';
+	else
+		$champ_titre = 'titre';
+
 	// D'abord, essayer de recuperer l'URL existante si possible
-	$result = spip_query("SELECT * FROM $table WHERE $col_id=$id_objet");
+	$result = spip_query("SELECT url_propre, $champ_titre
+	FROM $table WHERE $col_id=$id_objet");
 	if (!($row = spip_fetch_array($result))) return ""; # objet inexistant
 
 	// Si l'on n'est pas dans spip_redirect.php3 sur un objet non publie
@@ -93,6 +100,14 @@ function _generer_url_propre($type, $id_objet) {
 	if (spip_num_rows(spip_query($query)) > 0) {
 		$url = $url.','.$id_objet;
 	}
+
+	// Eviter de tamponner les URLs a l'ancienne (cas d'un article
+	// intitule "auteur2")
+	if ($type == 'article'
+	AND preg_match(',^(article|breve|rubrique|mot|auteur)[0-9]+$,', $url))
+		$url = $url.','.$id_objet;
+
+	// Mettre a jour dans la base
 	$query = "UPDATE $table SET url_propre='".addslashes($url)."' WHERE $col_id=$id_objet";
 	spip_query($query);
 	spip_release_lock($lock);
@@ -162,7 +177,7 @@ function recuperer_parametres_url($fond, $url) {
 
 	// Migration depuis anciennes URLs ?
 	if ($GLOBALS['_SERVER']['REQUEST_METHOD'] != 'POST' &&
-		preg_match(',(^|/)((article|breve|rubrique|mot)\.php3?([\?&].*)?)$,', $url, $regs)) {
+preg_match(',(^|/)((article|breve|rubrique|mot|auteur)(\.php3?|[0-9]+\.html)([?&].*)?)$,', $url, $regs)) {
 		$type = $regs[3];
 		$id_objet = intval($GLOBALS['id_'.$type]);
 		if ($id_objet) {
diff --git a/inc-urls-standard.php3 b/inc-urls-standard.php3
index 1540d032a177423edf5bbb86546702e4e97ff1fa..ca9348cdf8a42378b04f64feb19b7656b7f13c36 100644
--- a/inc-urls-standard.php3
+++ b/inc-urls-standard.php3
@@ -47,6 +47,28 @@ function generer_url_document($id_document) {
 
 function recuperer_parametres_url($fond, $url) {
 	global $contexte;
+
+
+	/*
+	 * Le bloc qui suit sert a faciliter les transitions depuis
+	 * le mode 'urls-propres' vers les modes 'urls-standard' et 'url-html'
+	 * Il est inutile de le recopier si vous personnalisez vos URLs
+	 * et votre .htaccess
+	 */
+	// Si on est revenu en mode html, mais c'est une ancienne url_propre
+	// on ne redirige pas, on assume le nouveau contexte (si possible)
+	if ($url_propre = $GLOBALS['_SERVER']['REDIRECT_url_propre']
+	OR $url_propre = $GLOBALS['HTTP_ENV_VARS']['url_propre']
+	AND preg_match(',^(article|breve|rubrique|mot|auteur)$,', $fond)) {
+		$url_propre = preg_replace('/^[_+-]{0,2}(.*?)[_+-]{0,2}(\.html)?$/',
+			'$1', $url_propre);
+		if ($r = spip_query("SELECT id_$fond AS id FROM spip_".$fond."s
+		WHERE url_propre = '".addslashes($url_propre)."'")
+		AND $t = spip_fetch_array($r))
+			$contexte["id_$fond"] = $t['id'];
+	}
+	/* Fin du bloc compatibilite url-propres */
+
 	return;
 }