Comment améliorer ma règle

WRInaute discret
Bonjour,

J'utilise actuellement la règle suivante :

Code:
#RewriteRule ^theme-(.+)-([0-9]+).html$ /listing_produits_themes.php?titre=$1&categorie=$2 [L]

Maintenant imaginons que j'ai un theme rouge avec comme id 12 (j'utilise l'id pour mes requetes sql)

Le soucis est que l'on tappe :

http://www.XXX.fr/theme-theme-rouge-12.html
ou
http://www.XXX.fr/theme-theme-rouge-super-cool-de-la-mort-12.html

ces deux liens renvoient vers la même pas et je risque pages en doubles alors que j'ai le meme contenu :x

Comment puis je faire :?:

Merci
 
WRInaute passionné
J'imagine que seule la catégorie te permet de retrouver la page, et que le titre est là pour rendre l'URL plus sexy ?

Il faut donc après avoir récupéré le titre dans ta base, que tu le compare à ton $_GET, et que tu fasse une redirection 401 vers le bon titre si celui-ci n'est pas correct.
 
WRInaute passionné
J'ai eu un peu le même soucis que toi...

J'ai une règle dans le .htacess :
Code:
RewriteRule ^index-thematique/article/([-a-z0-9]+)-([0-9]+)\.html$  /index-thematique/article/thema-article.php?idArticle=$2 [R=301,L]

Pour m'assurer du bon titre dans l'url dans le fichier qui affiche la page :

Dans le premier cas, je redirige vers une page d'erreur ou dans ce cas vers l'index thématique si le titre est inconnu (au cas ou un visiteur mettrait un identifiant bidon dans l'url par exemple).
Dans le second cas, je construit mon url avec le bon titre et je le compare avec celle demandée. Si elle n'est pas bonne, je la redirige.

Code:
/* Redirection vers la page d'erreur si le terme est inexistant */
if (empty($article)) { // 
	header ('HTTP/1.1 301 Moved Permanently');
	header('Location: http://www.science-et-vie.net/index-thematique/index-thematique.html');
	exit;
} else {
	$lien = traitementCaractUrl($article_vierge);
}

// On fait une redirection 301 si le nom n'est pas le bon
if ($_SERVER['REQUEST_URI'] != '/index-thematique/article,'.$lien.-.$id_thema.'.html') {
	header ('HTTP/1.1 301 Moved Permanently');
	header('Location: http://www.science-et-vie.net/index-thematique/article,'.$lien.-.$id_thema.'.html');
	exit;
}

Je t'ai laissé mon code tel quel. A toi de le modifier pour le coller à ta situation.
 
Discussions similaires
Haut