Redirection htaccess id=slug vers slug.php

Avatar du membre
Mammouth du PHP | 1564 Messages

07 juil. 2020, 21:29


fury_fatal
Invité n'ayant pas de compte PHPfrance

10 juil. 2020, 10:29

Je constate que les anciennes adresses marche aussi : index.php?id=slug

Ce qui donne des doublons sur les moteurs de recherche. Comment je peux rediriger tous les index.php?id=slug vers :
^article-([\w-]+)\.php$

Avatar du membre
Mammouth du PHP | 1564 Messages

10 juil. 2020, 11:19

Pour remedier à ce problème, deux solution:

la première c'est que dès le départ (la mise en route du site sur le web) il te faut mettre que des liens réécrits, tu ne dois avoir nul part un index.php?etc... mais seulement des article-(etc...) (ou autres, je suppose que tu n'aura pas seulement des article-(etc...)

la deuxième c'est de dire que cette page est à présent réécrite (quand on fait la modification après que le site soit lancé et que les pages sont enregistré dans les moteurs de recherche) donc il faut rediriger vers la page réécrite en 301, tu peux le faire en PHP avec un header(), ex:
header("Status: 301 Moved Permanently", false, 301);
header("Location: article-(etc...).php");
bien sûr ne pas mettre ce code en haut sans condition car il ferait une boucle mais vérifier si le visiteur (ou le robot) est sur la page index.php ou article-(etc...), si il est sur index.php, mettre le code ;)

Tu peux vérifie si il est sur une page où l'autre avec $_SERVER['SCRIPT_FILENAME'] (je penses ou sinon faire un var_dump($_SERVER) et voir à prendre le plus approprié ;)

fury_fury
Invité n'ayant pas de compte PHPfrance

10 juil. 2020, 14:27

Mais avec ce code de redirection 301, il faudrait faire manuellement pour toutes les pages. On ne peut pas automatiser pour toutes les pages, ainsi que les futures pages.

Mammouth du PHP | 2703 Messages

10 juil. 2020, 14:36

si le slug est généré à partir d'un champ de la base de données, c'est le même code php pour toutes les pages.

$_SERVER['REQUEST_URI'] pour faire le test.

Avatar du membre
Mammouth du PHP | 1564 Messages

10 juil. 2020, 22:20

pour ton problème ya juste qu'à le mettre sur index.php

c'est relou à faire si ya plusieurs pages, on apprend de ses erreurs...

Avatar du membre
Mammouth du PHP | 1564 Messages

10 juil. 2020, 22:26

" ainsi que les futures pages"

Non te faut pas dire que index.php?id=(etc..) existe, direct, d'entrée de jeu, tu met tes liens réécrits sur ton site et tu ne n'aura pas de surprise avec des URL de ton site type: tonsite.ext/index.php?id.... indéxées par les moteurs, car tu affiche en HTML des liens directement réécrits: comme article-quelquechose.php, personne ne saura que les pages du type "article-quelquechose.php" c'est en fait index.php?id=quelquechose

Après faire une réécriture sur index.php, bof bof... à moins que tu modifie ton DirectoryIndex dans ton htaccess pour avoir une autre page index :wink: