SPIP 1.9.2c - redirection pour mettre a jour url indexées

Nouveau WRInaute
Bonjour à tous,

J'ai lu les messages du forum et les articles du site, mais je ne suis pas suffisamment calé pour pouvoir me débrouiller seul.

J'ai un site sous spip 1.9.2c, qui a connu plusieurs phases de réécritures d'url:
à la base des url du type:www.critikat.com/article.php3?id_article=603
puis une réécriture du type: www.critikat.com/article603.html
puis: www.critikat.com/Titre-de-l-article
et maintenant: www.critikat.com/Titre-de-l-article.html

Le problème, comme souvent soulevé dans ce forum, est qu'il reste indexé dans les moteurs de recherches (et google principalement) toutes les types d'url.

Je pense qu'il faut que je fasse une redirection mais je ne suis pas sûr que ça permettra à terme, que toutes les adresses soient mises à jour dans les indexes, et je ne sais pas trop comment écrire cette redirection.

Pourriez-vous m'aider ou me diriger vers une page que j'aurais raté qui expliquerait comment faire?

Merci beaucoup.
 
WRInaute passionné
La meilleure solution selon moi est la redirection (301 evidemment ;-) ) pour indiquer aux moteurs que les pages ont déménagé.
Pour réaliser cela tu peux mettre un bout de code php, dans les squelettes des articles, des rubriques et des autres squelettes si nécessaire, comparant l'url appelée à l'url réécrite, comme par exemple

<B_article><BOUCLE_article(ARTICLES){id_article}><?php
// mon code de test comparant $_SERVER['REQUEST_URI'] à #URL_ARTICLE
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Il faut mettre le code php juste après <B_article><BOUCLE_article(ARTICLES){id_article}><?php ...
et mettre la balise DOCTYPE juste après la fin du php ?><!DOCTYPE ... pour éviter de se retrouver avec des espaces avant la balise DOCTYPE
 
Nouveau WRInaute
Merci beaucoup pour la réponse !

Justement, le problème est que google (je ne vais prendre que lui comme exemple) à plusieurs types d'url indexéeset je ne sais pas vraiment comment m'y prendre pour écrire la règle comparant _SERVER['REQUEST_URI'] à #URL_ARTICLE.

Le but est d'arriver à ce que toutes les url indexées soient du type : critikat.com/Titre-de-l-article.html

Ça ne dois pas être trop dur d'écrire la règle qui fera passer de
critikat.com/Titre-de-l-article à --> critikat.com/Titre-de-l-article.html (il n'y a qu'a ajouter le .html),

mais par contre pour passer de

critikat.com/article123.html ou critikat.com/article.php3?id_article=234 à --> critikat.com/Titre-de-l-article.html ça doit être plus costaud, vu qu'il ne suffit plus d'ajouter .html

Faut-il que je fasse 3 règles d'écriture séparées, une pour chaque cas?

Désolé, je débute dans ces questions-là... :?
 
WRInaute passionné
Pour comparer $_SERVER['REQUEST_URI'] à #URL_ARTICLE, tu peux récupérer la page appelée comme cela en php :

$urlappelee = explode("?", $_SERVER['REQUEST_URI']);
$pageappelee = $urlappelee[0];
$pageappelee = substr($pageappelee, 1); // enleve le "/"

et ensuite

si $pageappelee != "#URL_ARTICLE" alors

header("Status: 301 Moved Permanently", false, 301);
header("Location: #URL_ARTICLE");
exit();

Quand Google accédera à ta page avec la mauvaise url, ca lui indiquera une redirection 301 vers la bonne url et il mettra ainsi progressivement à jour les pages du site dans son index.
 
Nouveau WRInaute
Bonjour.

Je rebondis sur cette aide car j'ai l'impression que le script renseigné ici est caduque. Il y a comme une erreur. Regardez ce que j'obtiens en exemple:


//si $_SERVER['REQUEST_URI'] vaut critikat.com/article.php3?id_article=603
$urlappelee = explode("?", $_SERVER['REQUEST_URI']);
//alors $urlappelee vaut Array

$pageappelee = $urlappelee[0];
//alors $urlappelee vaut critikat.com/article.php3

$pageappelee = substr($pageappelee, 1);
//alors $urlappelee vaut ritikat.com/article.php3


Ca ne va pas. Quelque chose cloche dans mon raisonnement... alors merci de m'expliquer ce qui ne va pas
 
Discussions similaires
Haut