From 80efc35192aa97f09adf591aa08f44c8b3932e5c Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Tue, 10 Mar 2009 15:10:41 +0000 Subject: [PATCH] je n'avais pas mesure toutes les consequences de la disparition de type_urls dans http://trac.rezo.net/trac/spip/changeset/13741/spip/htaccess.txt : du coup je provoquais une 404 sur les urls de type spip.php (marcimat, nddinechin et autres) --- ecrire/public/styliser.php | 7 ++++--- ecrire/urls/arbo.php | 8 ++++++-- ecrire/urls/page.php | 2 +- ecrire/urls/propres.php | 38 +++++++++++++++++++++----------------- 4 files changed, 32 insertions(+), 23 deletions(-) diff --git a/ecrire/public/styliser.php b/ecrire/public/styliser.php index e654dce80e..9e90429737 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 9acb929342..f11398c56b 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 b1de3ec886..654a0aee75 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 edaf65d66c..dec6b8bdda 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 + ); + } } } } -- GitLab