[spip-dev] erreurs 404 gérées par SPIP en deuxième rideau (truc de fou)

Coucou,

un truc de fous qui sert à migrer doucement mes archives vers spip :
exemple : http://miel.monde-diplomatique.fr/2001/07/RIVIERE/
et ça fonctionne sans aucune rewriterule !

Voilà comment ça se passe :

dans /etc/apache/httpd.conf

ErrorDocument 404 /spip/appel404.php3

le fichier appel404.php3 :
<?
        $fond = "not_found"; // a determiner par inc-urls
        $delais = 24 * 3600;
        include ("inc-public.php3");
?>

Et, dans inc-urls-diplo.php3 :
<?
.../...
function recuperer_parametres_url($fond, $url) {
    global $contexte;
    global $fond;

    if ($fond == "not_found"){
        $not_found = true;
        // ici on intercepte les erreurs passées par apache

        // secteur 919 = Archives
        if (eregi("^/(2001/[01][0-9]/[a-z]+/[0-9a-z\.]*)$", $url, $match)){
            $uri = $match[1];
            $result = mysql_query("SELECT * FROM spip_articles WHERE id_secteur = 919 AND descriptif LIKE '$uri"."%'");
            if ($row = mysql_fetch_array($result)){
                $contexte['id_article'] = $row['id_article'];
                ereg("^([^ ]+)",$row['descriptif'],$match);
                $the_url = $match[1];
                if ($the_url != $uri){
                    @header("Location: /$the_url");
                    exit();
                }
                $fond = "sq/article";
                $not_found = false;
            }
        }
        
    }

.../...

    if ($not_found) {
        @header("HTTP/1.0 404 Not Found");
        $REDIRECT_URL = $url;
        $descriptif='';
        include "/www/monde-diplomatique/error/404.php3";
        exit();
    }

.../...
?>

Pour obtenir que tout marche j'ai dû modifier un tout petit peu
inc-public.php3 et inc-calcul.php3 ; voulez-vous jeter un oeil aux modifs ?
les fichiers sont dans devel/temp_404/ en attendant qu'ARNO* et Antoine les
valident.

-- Fil