problème de htaccess : $1 et $2 découlant du $1

Nouveau WRInaute
Bonjour la communauté,

je viens vers vous car j'ai un problème de réécriture :

afin de mieux me faire référencer dans mon secteur géographique, je réécris une liste d'url avec la ville dans la barre d'adresse.

dans ma base de donnée j'ai :
- id_ville le bigint
- meta : le nom de mes villes en minuscule sans caractères


j'ai créé cette ligne dans mon fichier htaccess :
RewriteRule ^creation-([a-z]+)-([0-9]+)(\.html)?$ spip.php?page=creation-&meta=$1&id_ville=$2 [QSA,L]

le but est de récupérer "l'id_ville" de la bdd et son nom (qui est en minuscule dans la bdd) via "meta" ... la page s'affiche bien :
ex : creation-halluin-55

MAIS : si je change une ou plusieurs lettres dans la barre d'adressse de META, la page continue de s'afficher, pour faire simple même si le nom de ma ville est modifié ou erroné ça continue de s'afficher.
Si je change l'id_ville, ça change bien de ville mais mon adresse peut garder le nom de l'autre ville sans que ça affiche erreur ou 404...

De plus je n'arrive pas à afficher juste mon url avec la ville, si j'enlève le id_ville, ça bug : page blank
Du coup j'ai mis le id_ville en fin d'url mais comme dit plus haut : dans ville on peut marquer ce qu'on veut.

Pouvez-vopus m'expliquer comment je peut faire une réécriture pour que la ville découle obligatoirement de mon $2 et que toute réécriture de ville dans la barre d'adresse soit interdite : creation-hallin-55 / creation-arras55

Merci d'avance :)
 
WRInaute impliqué
Pas possible à ma connaissance d'accéder à une bdd juste avec de l'htaccess.
En termes de référencement il suffit d'indiquer la "bonne" url, IE celle avec la bonne ville, dans la balise canonical. Le problème est semblable à celui des attributs en fin d'url (&x=) qui peuvent donner un nombre infini d'url.
Il est également possible de faire une redirection depuis le PHP mais l'intérêt est limité, il est nettement préférable de s'assurer que seuls les bons liens existent sur le site.
 
Discussions similaires
Haut