Aller au contenu

Ecrire une nouvelle rewriting rules


Sujets conseillés

Bonjour

J'ai déjà fait appel à vous il y a 3 semaines. Ca fonctionne nickel.

Maintenant je reviens vers vous car pour des problèmes de stats qui ne prennent pas en considération les url du genre : mapage.php?id_article=6 je souhaiterais réécrire quelques pages que je n'avais pas jusqu'à présent touchées.

Donc mon site fonctionne sous SPIP et voici la règle :

RewriteEngine on
RewriteRule ([a-z]+)-([^=]*)-([0-9]+).html$    /$1.php3?id_$1=$3 [L]

Pour informations cette règle réécrit différentes pages (autant des pages articles, rubriques, breves). Par exemple :

article.php3?id_article=12
rubrique.php3?id_rubrique=12
breve.php3?id_breve=12

Avec cette règle au lieu d'avoir des pages nommées comme ci-dessus, j'ai par exemple :

article-Saint_ Germain___Tourist-34.html

Pour arriver à écrire l'url avec "article", le titre de l'article et son id (idem pour rubrique et brève) des petites fonctions forts sympathiques sont intégrées dans un fichier spip (il fait sa petite cuisine interne).

Voici les fonctions :

Ici pour article

function generer_url_article($id_article) {
       if (! $id_article) $id_article = 0;        
       $result = spip_query("SELECT id_secteur,titre FROM spip_articles WHERE id_article=$id_article");
       $row = spip_fetch_array($result);
       $id_secteur = $row['id_secteur'];
       $titre = trim($row['titre']);
      $url = "article-".translitteration(nettoyerURL($titre)). "-$id_article.html";
       if ($GLOBALS['recherche']) $url .= "?var_recherche=".urlencode($GLOBALS['recherche']);
       return $url;
}

Là pour rubrique :

function generer_url_rubrique($id_rubrique) {
 if (! $id_rubrique) $id_rubrique = 0;        
       $result2 = spip_query("SELECT id_rubrique,titre FROM spip_rubriques WHERE id_rubrique=$id_rubrique");
       $row2 = spip_fetch_array($result2);
       $id_secteur2 = $row2['id_rubrique'];
       $titre2 = trim($row2['titre']);
      $url2 = "rubrique-".translitteration(nettoyerURL($titre2)). "-$id_rubrique.html";
       if ($GLOBALS['recherche2']) $url2 .= "?var_recherche2=".urlencode($GLOBALS['recherche2']);
       return $url2;
}

Et enfin pour brève :

function generer_url_breve($id_breve) {
 if (! $id_breve) $id_breve = 0;        
       $result3 = spip_query("SELECT id_rubrique,titre FROM spip_breves WHERE id_breve=$id_breve");
       $row3 = spip_fetch_array($result3);
       $id_secteur3 = $row3['id_rubrique'];
       $titre3 = trim($row3['titre']);
      $url3 = "breve-".translitteration(nettoyerURL($titre3)). "-$id_breve.html";
       if ($GLOBALS['recherche3']) $url3 .= "?var_recherche3=".urlencode($GLOBALS['recherche3']);
       return $url3;
}

Voilà le fonctionnement.

Maintenant j'ai quelques pages qui ne respectent pas la règle dans la mesure où ces pages (ayant une structure différente des pages articles, rubriques et brèves) sont nommées différemment.

Donc comment faire pour que, par exemple :

home.php3?id_rubrique=6 devienne home.html ou accueil.html, peu importe. Je voudrais arriver à comprendre le principe car je doit l'appliquer à d'autres pages :

imprimer.php3?id_article=12

pourrait devenir

imprimer_titre_article.htm

par exemple.

annuaire.php3?id_rubrique=9

pourrait devenir

annuaire.html

et

annuaire.php3?id_rubrique=10

pourrait devenir

directory.html

. Oui j'ai 2 langues.

Etc

Je sais pas si c'est faisable. J'espère avoir été clair.

D'avance merci

Philippe

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...