récupération du get après rewriting

Ghalem

Nouveau WRInaute
Bonjour
ci dessous je vous indique mon code htaccess pour du rewriting d'url sur notre site :

Code:
RewriteRule ^that-and-that$  talent\.php\?id=(.+)[E=BREAK:1,L]
RewriteCond     %{ENV:REDIRECT_BREAK}     !^1$
RewriteCond     %{QUERY_STRING}   ^id=([0-9]+)$ [NC]
RewriteRule     ^this\.php$ /that-and-that [QSD,R=301,L]

j'ai en réalité une page qui contient des photos de produits et chaque image point vers une url de type .php contenant un id : this.php?id=15 (ou 16 ou 9 ou 1 ...)
cette url affiche une page contenant toutes les fiches produits chacune ayant son propre id.
Mon objectif est donc de propose une url "propre" de type that-and-that.
Cependant, bien que la réécriture fonctionne, la fiche produit n'est pas appelée mais c'est le haut de la page qui est affichée et ainsi donc la première fiche produit même lorsque c'est le produit 15 qui est cliqué.
Pouvez vous m'aidez à résoudre cette difficulté ?
Je vous remercie par anticipation pour votre temps.
 
Dernière édition par un modérateur:

rollback

WRInaute occasionnel
https://htaccess.madewithlove.be/
.....

sinon
alors essayons de décortiquer.
Comme dit déjà dans d'autres posts : le serveur web, au final ne comprendra que ce qu'il a toujours compris = this.php?id=15 (ou 16 ou 9 ou 1 ...)

L"url rewritting ne modifie pas le mécanisme de fonctionnement d'un site web. C'est une sorte de magicien qui reçoit une URL bien jolie qu'on a affiché au client qui qui la retransforme en truc tout moche mais qui plait au serveur web. Les serveurs web préfèrent les trucs tout moches.
C'est peut être ce qui nous différenciera à jamais de la machine et des intelligences artificielles...

Revenons, tous les produits ne peuvent pas se nommer avec le même nom : that-and-that
Il faudra forcément trouver une conversion qui fabriquera a nouveau : = this.php?id=15 = this.php?id=16
= this.php?id=17 ....
Effectivement un truc du style ^id=([0-9]+)$ mais cette séquence utilisera $1
" en gros on se retrouverait pour le serveur avec ce qui lui plait : id=$1 "
Et cette variable $1 il faut bien la remplir à un moment donné.

Je dis des trucs en dur
that-and-that/$1
ca donnerait /that-and-that/2 --> $1 = 2 --> index.php?id=2
ca donnerait /that-and-that/18569 --> $1 = 18569 --> index.php?id=18569

that$1-and-that
ca donnerait /that2-and-that --> $1 = 2 --> index.php?id=2
ca donnerait /that18569-and-that --> $1 = 18569 --> index.php?id=18569


....
 

Ghalem

Nouveau WRInaute
Bonjour Rollback. Merci pour ton temps.

Déjà essayé le that-and-that/$1. Pas de souci avec ça, ça fonctionne en effet et dans la même ligne que ta démonstration merci.

En réalité, ce qui me coince depuis le début, c 'est mon :
RewriteRule ^that-and-that$ talent\.php\?id=(.+)[E=BREAK:1,L]

dans mon php var_dump je retrouve ceci ["QUERY_STRING"]=> string(20) "id=(.+)[E=BREAK:1,L].
Ainsi il semble que le produit appelé (this.php?id=15 par exemple) ne soit pas identifié comme il conviendrait pour appeler la bonne fiche. Le même cas de figure se produit avec (.*) et ([0-9]+).

La réécriture, elle, fonctionne et j'affiche bien /that-and-that même lorsque je l'appelle directement.
et mon test d'entête http est propre.
 

Discussions similaires

Haut