[URL Rewriting] Supprimer automatiquer les paramètres

WRInaute discret
Bonjour,

J'ai des urls déjà rewritées pour lesquelles je voudrais interdire à un visiteur d'ajouter des paramètres complémentaires.

Exemple:

http://www.monsite.com/fr/ma-page.html (qui est déjà une url rewritée pour info)

Il faut interdire ceci :

http://www.monsite.com/fr/ma-page.html?param1=val1&param2=val2&param{n}=value{n}

Donc l'idée serait (dynamiquement) de faire une redirection 301 de

http://www.monsite.com/fr/ma-page.html?param1=val1&param2=val2&param{n}=value{n}

vers

http://www.monsite.com/fr/ma-page.html

Comment créer cette règle?

Un grand merci! ;)
 
WRInaute discret
Bon apparemment personne ne peut m'aider mais je ne lacherai pas sans avoir trouvé de solution. :wink:

Si maintenant, je veux éviter toute url ayant des paramètres (?param1=x&param2=z&...) si je fais avant le HTML, un test en PHP qui m'indique si il y a des paramètres ou pas et que je fais un header 301 suivi d'un header location de ma page d'accueil, est-ce une bonne solution pour éviter les URLs qui n'existent pas?

Exemple :

si quelqu'un fait un lien vers mon site avec une url ayant des paramètres

http://www.monsite.com/tutoriels/?test=1

alors je fais

Code:
header("Status: 301 Moved Permanently");
header("Location: http://www.monsite.com/tutoriels/");
exit();


si par contre j'ai http://www.monsite.com/tutoriels/ alors je ne fais rien.


Mon idée est d'éviter que des sites ne fasse des liens vers mon site en incluant des paramètres inutiles, ou qu'on référence des pages de mon site avec des paramètres inutiles, ainsi, cela éviterait du duplicate content...

Est-ce une bonne idée?
N'y a-t-il pas plus simple en htaccess?

Merci.
 
WRInaute passionné
Il faut utiliser une condition pour supprimer les paramètres :
Code:
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^une_page\.html$ /la_bonne_page.html? [R=301,L]

Sinon je te conseilles cet article qui donne une bonne solution pour éviter le duplicate content ou les paramètres inutiles. Le principe est de déterminer au début de chaque script le nom de la page que tu attends et de comparer avec l'url appelée :
http://www.urlrewriting.fr/eviter-le-duplicate-content-avec-des-urls-c ... le_10.html
 
WRInaute discret
Hello forty,

L'article est très intéressant... :wink:

Cependant, dans mon cas, cette technique ne me sera pas utile car je génère, via une fonction PHP, directement les urls rewritées sans passer l'id dedans.

Donc par exemple si je tape ceci : "une-page.html"

la fonction va vérifier dans une table à quel id correspond "une-page.html". Si il y a correspondance, alors on à accès à la page.

Maintenant, si il n'y a pas correspondance, peut-on faire systématiquement une redirection 301 vers index.php?

Je suppose que l'on peut avoir autant de redirection 301 que l'on veut vers une page?

Voilà, est-ce correcte comme solution? Merci. :wink:
 
WRInaute passionné
Si ta page n'existe pas : soit tu fais une redirection vers la racine soit tu renvoies un code retour 404 avec éventuellement le contenu d'une page 404 personnalisée. J'ai une préférence pour le code retour 404 avec un code du style :
Code:
if (...) {
...
} else { // page inexistante
		header('Status: 404 Not Found', false, 404);
		include('erreur404.php');
		exit;
}
Si tu ne veux pas faire de page 404 personnalisée, tu peux peut-être remplacer erreur404.php par le contenu de la racine.
La redirection 301 se fait avec la fonction header comme indiqué dans la page citée.
 
WRInaute discret
forty a dit:
Si ta page n'existe pas : soit tu fais une redirection vers la racine soit tu renvoies un code retour 404 avec éventuellement le contenu d'une page 404 personnalisée. J'ai une préférence pour le code retour 404 avec un code du style :
Code:
if (...) {
...
} else { // page inexistante
		header('Status: 404 Not Found', false, 404);
		include('erreur404.php');
		exit;
}
Si tu ne veux pas faire de page 404 personnalisée, tu peux peut-être remplacer erreur404.php par le contenu de la racine.
La redirection 301 se fait avec la fonction header comme indiqué dans la page citée.

Oui d'accord, mais les erreurs 404 sont mauvaises pour le référencement, alors je pensais plutôt faire au lieu d'une redirection 404 avec page 404 personnalisée, faire carrément une redirection 301 vers la home...

N'est-ce pas une bonne idée?
 
WRInaute passionné
la redirection est une bonne solution mais il est mieux de gérer au cas par cas pour pointer vers la page la plus proche (par exemple avec une faute d'orthographe dans une url).
Je gère les 404 au cas par cas en m'envoyant un mail. Suivant le cas je mets en place une redirection, je laisse l'erreur 404 ou je bloque l'accès avec une 403. ca permet de découvrir les liens entrants incorrects, les tentatives de hack, ...
 
WRInaute discret
Ha oui pas con :o

Et bien un grand merci pour les conseils et solution. Je vais méditer tout ça... :wink:
 
Discussions similaires
Haut