Aller au contenu

Sujets conseillés

Posté (modifié)

Bonjour,

Je rencontre un problème avec une variable _POST qui est vide après une réécriture d'URL et une redirection.

La variable est transmise en "hidden" dans une formulaire :


<form action="http://www.monsite.com/resultats.php" method="post">
...
<input type="hidden" name="origine" value="recherche" />
...
</form>

Dans le .htaccess j'ai ceci :


RewriteCond %{QUERY_STRING} ^page=([0-9]+)&choix_tri=(.*)$
RewriteRule ^/?resultats.php$ http://www.monsite.com/resultats-detailles/page-%1/tri-%2? [R=301,L]
RewriteRule ^/?resultats-detailees/page-([0-9]+)/tri-(.*) resultats_2.php?page=$1&tri=$2 [L]

L'URL est correctement réécrite mais je récupère une valeur vide pour ma variable POST.

J'ai cru comprendre que cela pouvait provenir des drapeaux (QSA ?) mais j'ai essayé en vain.

Avez-vous une solution à ça ?

Merci !

[edit] En fait je ne récupère aucune des variables passées par le formulaire, et pas seulement celle isue du champ "hidden" oops.gif [/edit]

Modifié par Beno
Posté

Le QUERY_STRING ne permet de récupérer que les variables passées en GET. Pour les formulaires en POST, comme il n'y a pas de variable dans l'URL, tu ne peux pas les garder.

C'est donc très logiquement que tu ne reçois aucune information de ton formulaire.

Posté

Merci pour ta réponse.

J'ai essayé de remplacer la redirection 301 par une redirection 307 ([R=307,L]) et à ce moment-là je reçois les variables, mais n'est-ce pas mauvais pour le référencement ?

Sinon existe-t-il autre chose que QUERY_STRING qui permettrait de conserver les variables POST ?

Posté

Comme une entête 307 signifie "Redirection temporaire" ... tu risques de ne pas voir ces pages indexées. :(

Posté

Un POST c'est normalement prévu pour une requête qui va faire des modifications, pas pour récupérer des données. On en abuse souvent parce que ça permet d'envoyer plus de données qu'un GET (où toutes les données envoyées doivent tenir dans l'URL), mais dans ton cas il me semblerait logique d'utiliser un GET plutôt qu'un POST, non?

De façon générale, les moteurs ne vont pas trop suivre les POST. Il fut un temps il ne le faisaient jamais (parce qu'un POST peut avoir un "effet", alors qu'un GET ne devrait pas en avoir), mais Google (et peut-être d'autres) commence à le faire quand ils pensent que ça ne pose pas de problème, et qu'ils ont une idée de ce qu'on peut bien mettre dans les différents champs (i.e. des selects, pas des champs de texte...). Dans ton cas, je ne compterais pas dessus pour du référencement, si tu veux que la page de destination soit référencée, il va falloir prévoir des liens "normaux" vers ces pages. Au final, ta RewriteRule ne serait donc pas top utile...

Jacques.

Posté

Merci pour votre aide.

En effet, il sera plus judicieux que je fasse tout passer par GET, comme ça plus de souci dans le htaccess et je peux réécrire mes URL facilement.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...