Aller au contenu

Redirection pour changer de règles de réécriture


Sujets conseillés

Bonjour,

J'utilise la réécriture d'url depuis 1 an et le passage de mon site sous SPIP 1.7.2.

Aujourd'hui je viens de passer en 1.8.2. Cette version propose plein de bonnes choses dont une méthode de réécriture mieux foutue que la mienne.

En effet, l'inconvénient de ma méthode est que les url contiennent le titre des pages séparés par des _. Or j'ai eu la confirmation qu'il valait mieux utiliser les tirets à la place. La nouvelle méthode permet de faire cela.

Pour infos Google a bien référencé toutes mes pages. Donc je veux faire des redirections des anciennes urls vers les nouvelles avec code 301.

Donc je détaille. Initialement je réécris les urls des articles, rubriques et brèves.

J'ai mis les fonctions pour

générer les url : par ex :

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;
}

pareil pour rubrique et brève. Sauf que devant l'url il y a rubrique- et

breve-

Ainsi mes urls sont du type : article-le_titre_article-numerodelarticle.html

Dans le htaccess :

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

La méthode que je souhaite appliquer maintenant est déjà définie (merci les gens de Spip !):

Ainsi dans le htaccess :

RewriteRule ^\+[^/\.]+\+?(\.html)?$ breve.php3 [QSA,E=url_propre:$0,L]

RewriteRule ^-[^/\.]+-?(\.html)?$ rubrique.php3 [QSA,E=url_propre:$0,L]

RewriteRule ^[^/\.]+(\.html)?$ article.php3 [QSA,E=url_propre:$0,L]

Et le code est :

function generer_url_article($id_article) {
  $url = _generer_url_propre('article', $id_article);
  if ($url)
     return $url . _terminaison_urls_propres;
  else
     return "article.php3?id_article=$id_article";
}

function generer_url_rubrique($id_rubrique) {
  $url = _generer_url_propre('rubrique', $id_rubrique);
  if ($url)
     return '-'.$url.'-'._terminaison_urls_propres;
  else
     return "rubrique.php3?id_rubrique=$id_rubrique";
}

function generer_url_breve($id_breve) {
  $url = _generer_url_propre('breve', $id_breve);
  if ($url)
     return '+'.$url.'+'._terminaison_urls_propres;
  else
     return "breve.php3?id_breve=$id_breve";
}

Par exemple un article aura cette url : le-titre-de-mon-article.html

une breve : +le-titre-de-ma-breve+.html

une rubrique : -le-titre-de-ma-rubrique-.html

Maintenant comment dans le htaccess faire pour que mes anciennes url soient redirigées vers les nouvelles ? Je vais faire pour les MR des redirections permanentes avec le code 301.

Pour vous aidez à comprendre, mon site est www.francomix.com

Merci d'avance

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...