diff --git a/ecrire/public/styliser.php b/ecrire/public/styliser.php index e654dce80e928c1d2dedd0348fc37b069d5f545f..9e904297373eb1e89841e315845208f04d0afb54 100644 --- a/ecrire/public/styliser.php +++ b/ecrire/public/styliser.php @@ -41,12 +41,13 @@ function public_styliser_dist($fond, $id_rubrique, $lang='', $connect='', $ext=' // pas de squelette : erreur ! if (!$squelette) { + // Indiquer une erreur squelette include_spip('public/debug'); erreur_squelette(_T('info_erreur_squelette2', - array('fichier'=>"'$fond'")), + array('fichier'=>"'$fond.$ext'")), $GLOBALS['dossier_squelettes']); - $f = find_in_path(".$ext"); // on ne renvoie rien ici, c'est le resultat vide qui provoquere un 404 si necessaire - return array(substr($f, 0, -strlen(".$ext")), $ext, $ext, $f); + // provoquer 404 + return array(null, $ext, $ext, null); } return array($squelette, $ext, $ext, "$squelette.$ext"); diff --git a/ecrire/urls/arbo.php b/ecrire/urls/arbo.php index 9acb9293424542445e8d45996c060f925419cc15..f11398c56bc0dbf652d18b490c1d8bb7f9e65acd 100644 --- a/ecrire/urls/arbo.php +++ b/ecrire/urls/arbo.php @@ -534,8 +534,12 @@ function urls_arbo_dist($i, $entite, $args='', $ancre='') { if ($type) $entite = ($type == 'syndic') ? 'site' : $type; else { - $entite = '404'; - $contexte['erreur'] = ''; // qu'afficher ici ? l'url n'existe pas... on ne sait plus dire de quel type d'objet il s'agit + // Si ca ressemble a une URL d'objet, ce n'est pas la home + // et on provoque un 404 + if (preg_match(',^[^\.]+(\.html)?$,', $url)) { + $entite = '404'; + $contexte['erreur'] = ''; // qu'afficher ici ? l'url n'existe pas... on ne sait plus dire de quel type d'objet il s'agit + } } } define('_SET_HTML_BASE',1); diff --git a/ecrire/urls/page.php b/ecrire/urls/page.php index b1de3ec8868f9364c1c60856c66a755fdfb004c4..654a0aee75555ab4c8851c776622faddee501a6f 100644 --- a/ecrire/urls/page.php +++ b/ecrire/urls/page.php @@ -91,7 +91,7 @@ function urls_page_dist($i, &$entite, $args='', $ancre='') $urls_anciennes = charger_fonction('propres','urls'); else $urls_anciennes = charger_fonction('arbo','urls'); - return $urls_anciennes($url_propre,$entite); + return $urls_anciennes($url_propre, $entite); } /* Fin du bloc compatibilite url-propres */ } diff --git a/ecrire/urls/propres.php b/ecrire/urls/propres.php index edaf65d66cb14f6c1045911ea505327b268a7592..dec6b8bdda87124c819b8cccd6580abbc8b34b7a 100644 --- a/ecrire/urls/propres.php +++ b/ecrire/urls/propres.php @@ -447,24 +447,28 @@ function urls_propres_dist($i, $entite, $args='', $ancre='') { } if ($entite=='' OR $entite=='type_urls' /* compat .htaccess 2.0 */) { - if ($type) + if ($type) { $entite = ($type == 'syndic') ? 'site' : $type; - else { - $entite = '404'; - $contexte['erreur'] = ''; - // l'url n'existe pas... - // on ne sait plus dire de quel type d'objet il s'agit - - // sauf si on a le marqueur. et la c'est un peu sale... - if (_MARQUEUR_URL) { - $fmarqueur = @array_flip(unserialize(_MARQUEUR_URL)); - preg_match(',^([+][-]|[-+@_]),', $url_propre, $regs); - $objet = $regs ? substr($fmarqueur[$regs[1]],0,n-1) : 'article'; - $contexte['erreur'] = _T( - ($objet=='rubrique' OR $objet=='breve') - ? 'public:aucune_'.$objet - : 'public:aucun_'.$objet - ); + } else { + // Si ca ressemble a une URL d'objet, ce n'est pas la home + // et on provoque un 404 + if (preg_match(',^.*/[^\.]+(\.html)?$,', $url)) { + $entite = '404'; + $contexte['erreur'] = ''; + + // l'url n'existe pas... + // on ne sait plus dire de quel type d'objet il s'agit + // sauf si on a le marqueur. et la c'est un peu sale... + if (_MARQUEUR_URL) { + $fmarqueur = @array_flip(unserialize(_MARQUEUR_URL)); + preg_match(',^([+][-]|[-+@_]),', $url_propre, $regs); + $objet = $regs ? substr($fmarqueur[$regs[1]],0,n-1) : 'article'; + $contexte['erreur'] = _T( + ($objet=='rubrique' OR $objet=='breve') + ? 'public:aucune_'.$objet + : 'public:aucun_'.$objet + ); + } } } }