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