Apache 301 rediriger et préserver les données post

j'ai implémenté des URL SEO en utilisant les redirections Apache 301 vers une redirection.cfm' dans la racine du site web qui gère toute la construction D'URL et la livraison de contenu.

les données Post sont perdues lors d'une redirection 301.

incapable de trouver une solution jusqu'à présent, ont essayé d'exclure la méthode de poste de réécritures - scénario du pire nous pourrions utiliser les anciennes URLs de type pour les méthodes de poste.

peut-on faire quelque chose?

Merci

18
demandé sur Daniel Cook 2012-11-29 19:13:42

3 réponses

les données POST sont rejetées lors de la redirection car un client va effectuer une requête GET à L'URL spécifiée par le 301. Période.

la seule option est de convertir les paramètres du POST pour obtenir les paramètres et les coller sur la fin de L'URL à laquelle vous redirigez. Cela ne peut être fait dans une .réécriture du fichier htaccess.

une option est de saisir les requêtes POST à l'url à rediriger et de les transmettre à une page pour gérer la redirection. Vous auriez besoin de faire la transposition des paramètres dans le code puis émettre l'en-tête de redirection avec le paramètre ajouté nouvelle url de cette façon.

mise à jour: comme indiqué dans les commentaires à cette réponse, si vous redirigez vers une autre URL en spécifiant les paramètres de POST et que L'URL est également accessible sans paramétreurs (ou les paramètres sont variables), vous devez spécifier un lien vers L'URL canonique pour la page.

dire le formulaire de post redirections transposées à la suivante obtenir ressource:

   http://www.example.com/finalpage.php?form_data_1=123&form_data_2=666

vous souhaitez ajouter ce lien enregistrement à la section principale de la page:

   <link rel="canonical" href="http://www.example.com/finalpage.php" />

cela assurerait que toute la valeur de référencement serait donnée à http://www.example.com/finalpage.php et éviter les problèmes possibles avec le contenu dupliqué.

17
répondu Ray 2014-08-20 17:08:44

utilisant un 307 devrait être exactement ce que vous voulez

"
307 Temporary Redirect (since HTTP/1.1)
In this case, the request should be repeated with another URI; however, future requests
should still use the original URI.[2] In contrast to how 302 was historically implemented,
the request method is not allowed to be changed when reissuing the original request. For
instance, a POST request should be repeated using another POST request

- Wikipedia

44
répondu Hashbrown 2017-04-12 07:31:17

utiliser 301 redirections pour réécrire une URL générale n'est pas la solution. C'est un problème de performance (surtout pour mobile, mais aussi en général), puisqu'il double le nombre de requêtes pour votre page.

pensez à utiliser un outil de réécriture D'URL comme URLrewriteFilter ou apache mod_rewrite de Tuckey .

ce que Ray a dit est tout à fait vrai, c'est juste un commentaire supplémentaire sur votre approche générale.

0
répondu marc82ch 2013-06-19 12:19:43