Est-il possible de rediriger les données post?
J'ai un site web où toutes les demandes sont redirigés en silence (via .htaccess
) à index.php
et puis PHP est utilisé pour afficher la bonne page (par l'analyse de la REQUEST_URI
).
Je me demandais si il est possible de soumettre des données POST à une fausse adresse aussi?
J'ai actuellement reçu mon formulaire comme si...
<form action="/send-mail" method="post">
Et mon .htaccess
règle est...
# redirect mail posting to index
RewriteRule send-mail index.php?send-mail [NC,L]
Mon index.php
vérifie isset($_GET['send-mail'])
qui fonctionne très bien.
Cela semble toutefois déposer tous les POST de données qui doivent être envoyées à elle.
Est-il un moyen de garder le poste de données? Je ne veux pas l'utiliser, car il ne peut pas envoyer autant d'informations qu'il puisse ne pas être un problème avec un simple formulaire de demande de renseignements.
Voici mon .htaccess
pour rediriger vers index.php
# serve files and dirs if they exist please, otherwise send to index
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
"P" agit comme un "L" en ce qu'elle s'arrête les règles de traitement, mais il indique également le module que la demande devrait être transmises au module de proxy intacte (ce qui signifie publier des données est conservé).
RewriteRule send-mail /path/to/index/index.php?send-mail [NC,P]
(ou à tout le moins un/
avant d'index)ProxyPreserveHost On
dans la config d'apache.Vous devriez être en mesure de simplement rediriger vers
index.php
, puis, dans ce script, l'accès$_SERVER['REQUEST_URI']
pour voir l'original de la demande, avec "envoyer un courriel" intact.Par ailleurs, "ne peut pas envoyer autant d'informations" n'est pas la raison d'utiliser des POST. La raison d'utiliser des POST, c'est que la demande de modification des données sur votre site, plutôt que de simplement la récupération des données.
Supposez que vous mettez un lien sur votre page grâce à une requête du type "
/delete_user?id=1234
," et puis certains moteur de recherche innocemment suit le lien, comme c'est l'indexation de votre site. C'est pourquoi les demandes ne sont pas bonnes pour les demandes de modification des données.Pour éviter les problèmes avec certains proxys et Apache réécrit, passer
POST
de données ou définir laContent-Length: 0
- tête pour les demandes dont le corps est vide.J'ai récemment eu des problèmes avec Apache conversion de ma demande pour un
GET
lors d'unePOST
dont le corps est vide. Ainsi, au lieu de cela:passer le
Content-Length
en-tête:ou passer quelque chose dans le corps:
Aussi longtemps que vous êtes seulement à l'aide d'un interne de réécriture, pas une redirection HTTP, vous ne devriez pas perdre de données POST. Voici la règle que j'utilise sur mon site:
Essayez d'utiliser le HTTPLiveHeaders extension pour Firefox (ou quelque chose de similaire) et le suivi de toute demande de page. Assurez-vous que vous n'obtenez pas une redirection HTTP. Si vous obtenez un HTTP/1.1 3xx réponse et Emplacement: http://address en-tête, qui est le problème. Votre règle de réécriture que vous avez posté ne devrait pas provoquer que cela se produise. Si vous êtes redirigés, il y a probablement une erreur dans votre code PHP ou d'une autre règle de réécriture qui est appliqué.
GET
pour la deuxième demande après avoir été redirigé...Je veux rediriger user_login.php pour seo friendly url de la forme /l'utilisateur de connexion avec les données du formulaire post et cela a fonctionné pour moi.
Dans le fichier de vue