comment enlever les ?id=1 aux URL pour éviter les duplicat content ?

a marqué ce sujet comme résolu.

Bonjour,

Je suis débutant en PHP, je suis en train de créer un petit site pour un ami, et je suis en train de lui faire un admin (mini CMS). Et j'ai un problème qui me bloque. Je souhaite avoir des URL sans les points d’interrogations. Hier j'ai passé toute la journée dessus, mais je n'y arrive pas. Donc j'ai besoin d'aide SVP.

Avant mes articles avaient comme URL ceci par exemple : http://www.mon-site/article.php?url=testurl

Mais je veux des url comme ceci par exemple: http://www.mon-site/testurl

J'ai donc ajouté ce code dans dans mon .htaccess :

1
RewriteRule ^([a-zA-Z0-9-]+)$ article.php?url=$1 [L]

_Est-ce déjà bien comme ceci qu'il faut d'abord faire? en faisant tout d'abord une règle général de ré-écriture dans un .htaccess ?

En fait, mes pages sont bien disponibles quand je tape dans le navigateur les nouvelles URL. Mais quand je tape dans le navigateur les anciennes URL (par exemple: http://www.mon-site/article.php?url=testurl) , mes page sont aussi encore disponibles, ce qui risque d’être problématique avec Google et les duplicate content…

Comment faut-il faire pour que mes pages soient disponibles uniquement avec les nouvelles URL ? Hier dans Google j'ai lu que c'était peu être possible en PHP avec $_SERVER['PHP_SELF'] ou $_SERVER['REQUEST_URI']), ou je ne sais pas trop quoi d'autre, mais je comprend rien.

Est-ce possible de m'expliquer comment faire (avec du langage de débutant)?

Merci beaucoup

Bonjour, merci à tous pour vos réponses, de coup quelqu'un m'avais dit de faire ceci:

1
2
3
4
5
6
// si on trouve ?url= dans l'url, alors on fait une redirection 301 vers le contenu de la variable.
if (strpos($_SERVER['REQUEST_URI'], '?url=') != false)
{                                               
     header('Location:'.$_GET['url'], true, 301);
     exit();
}

Je ne sais pas si ça fait pro, mais quand quelqu'un essaye d'aller à l'ancienne url avec les ?, il est redirigé vers la nouvelle. merci a+

Dans ton URL rewriting je rajouterai plutôt un paramètre "isRewriting" soit en variable d'environnement (voir la doc) article.php?url=$1 [L,env|E=isRewriting:1] ou en GET page.php?id=$1&isRewriting=1. Et si il n'est pas présent tu fais ta redirection.

Je trouve que c'est une solution plus "stable", si ta regex vient à évoluer ou si le nombre de paramètre augmente.

PS : Je ne suis pas sûr de la syntaxe pour la variable d'environnement.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte