Pb rewriting

WRInaute discret
Hello ;)

Voila mon code :
Code:
RewriteRule ^les-meilleurs-liens-search\.html?q=((.*)+)$ /pages_externes/tth/tth-links/liens.php?q=$1 [L]

Et le probleme, c'est que n'arrive pas a afficher ma variable "q" :(

Une idée ?
 
WRInaute impliqué
Salut, c'est normal car ta page fictive est en html, donc les variables mise après le ? ne passent pas.
Fais plutôt ça :
Code:
RewriteRule ^les-meilleurs-liens-((.*)+)\.html$ /pages_externes/tth/tth-links/liens.php?q=$1 [L]
;)
 
WRInaute discret
Oui, j'avais fait ça aussi, seulement j'aimerai avoir la requete (recherche) normalement style ".html?q=marecherche"

Et puis googlebog n'utilise pas des formulaires donc...

Alors du coup j'ai simplement ça:
Code:
RewriteRule ^les-meilleurs-liens-search\.html$ /pages_externes/tth/tth-links/liens.php [L]

Preque inutile quoi...mais j'arrive a récuperer la variable "q", que je stock dans un cookie... (la encore pas genant pour google, puisque ça ne le conserne pas)
exemple :
les-meilleurs-liens-search.html?q=marecherche et ça marche tres bien ;)

les-meilleurs-liens
 
WRInaute impliqué
Dans ce cas il faut mettre l'extension .php mais je ne vois pas le problème de mettre la variable q directement avant le .html :)
 
WRInaute passionné
Phobos a dit:
je ne vois pas le problème de mettre la variable q directement avant le .html :)

Car le q est dépendant de son formulaire, donc à priori inconnu !

Les paramêtres apres l'url sont transmis avec le flag [QSA]

il faut faire :

Code:
RewriteRule ^les-meilleurs-liens-search\.html$ /pages_externes/tth/tth-links/liens.php  [QSA,L]
 
WRInaute discret
jeroen a dit:
Phobos a dit:
je ne vois pas le problème de mettre la variable q directement avant le .html :)

Car le q est dépendant de son formulaire, donc à priori inconnu !

Les paramêtres apres l'url sont transmis avec le flag [QSA]

il faut faire :

Code:
RewriteRule ^[url=http://www.pim.asso.fr/pages_externes/tth/tth-links/liens.php]les-meilleurs-liens-search[/url]\.html$ /pages_externes/tth/tth-links/liens.php  [QSA,L]

Exact ;)

Et sinon ça change quoi exactement le QSA ? Parce que je vient de changer avec ton code et sa fonctionne aussi...
 
WRInaute discret
C'est bon j'ai compris :)
Quelques drapeaux (ou flags) utiles.

Voici quelques drapeaux utiles pour faciliter la maintenance d’un site :

[L] Celui-ci vous semble familier, comme nous l’avons vu dans notre précédent exemple. Il mérite toutefois une précision. Lorsque le module de réécriture est actif, les règles sont lues séquentiellement et l’URL est comparée ligne à ligne avec le premier argument de celles-ci jusqu’à la dernière.

Si une réécriture est effectuée, c’est la forme réécrite qui sera utilisée en entrée pour les règles suivantes.

Le flag [L] permet de sortir prématurément de la boucle.
Un autre exemple serait, en début d’une liste de règles :
RewriteRule ^.*\.gif$ - [L]
RewriteRule ^.*\.jpg$ - [L]
Nous introduisons ici un nouveau concept, à savoir un second argument vide (ou presque, car il consiste en un seul caractère « - » ) . Cette règle particulière implique qu’il n’y a pas de réécriture, l’URL étant passée sans modification aucune. Elle signale au serveur Apache de passer toutes les URL d’images gif ou jpg sans réécriture, ni traitement successif.
--------------------------------
[R]
[R=code] Dans ces deux formes une redirection est effectuée.
Si l’argument code n’est pas précisé, une redirection 302 (déplacé temporairement) est effectuée. Si vous souhaitez faire savoir au navigateur/robot qu’une page a été remplacée définitivement, utiliser le code 301 comme dans :
RewriteRule ^ancien\.html$ http://domaine.tld/nouveau.html [R=301,L]

Dans ce cas précis, une réécriture "externe" s’impose (utilisation de http://...)
Vous voyez ci-dessus que nous avons combiné deux flags en les séparant par une virgule.
--------------------------------
[F] Forbidden - interdit. Retourne un code 403, par exemple :
RewriteRule ^secret.html$ - [F]
( pas de réécriture vu le deuxième argument - )
--------------------------------
[NC] NoCase, ou « insensible à la casse ». La règle suivante :
RewriteRule ^script\.php$ programme.php [NC,L]
S’appliquera aussi bien à script .php, SCRIPT.PHP ou ScRiPt .PhP
--------------------------------
[G] Gone. Cette page n’existe plus et retourne une entête http 410
--------------------------------
[N] Force l’analyse et l’exécution de toutes les règles en repartant du début de la liste. Ici encore, comme expliqué plus haut ([L]), c’est l’URL modifiée après exécution de la dernière règle qui est utilisée en entrée, et non l’URL originelle. Attention aux boucles infinies !!
--------------------------------
[C] Chain, chaînage avec la ou les règles suivantes jusqu’à la première règle ne se terminant pas par [C]
Apache interprète ce flag comme suit : s’il y a réécriture (la règle est vérifiée), la règle suivante est exécutée avec la chaîne réécrite en entrée.
Si la règle ne se vérifie pas, toutes les règles qui suivent jusqu’à la première ne comportant pas le flag [C] ne sont pas appliquées.
--------------------------------
[QSA] Query String Append. Rajoute le QUERY_STRING à la fin de l’expression, après la réécriture. A réserver pour la dernière règle de réécriture. Utilisée le plus souvent avec le flag [L], comme dans [QSA,L]
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut