Redirigir POST htaccess

Esta pregunta es muy similar a: ¿Es posible redirigir los datos de las publicaciones? (preguntó Eariler) pero esa respuesta no parece funcionar para mí.

Tengo una forma:

<form action="http://a.test.com/contact" name="contact" method="post">

y dentro de un dominio adicional, (test.com es un complemento), hay un subdominio (a.), y dentro de allí tengo un archivo item.php y .htaccess

mi htaccess es el siguiente:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php 

# Forces a trailing slash to be added
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

#normal rewrites
RewriteRule ^[~|-]?([a-zA-Z0-9]+)[/]*$ item.php?user=$1 [NC,L]

nota: lo dejé como [NC, L] porque cuando lo cambié a [NC, P] me da un error de servidor 500.

y mi item.php

<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";

y no importa lo que contenga el formulario, $ _POST está en blanco ... sin embargo, si lo hago http://a.test.com/item.php?user=contact como la acción.

todo va bien. La publicación omite htaccess y la solución en SO no parece funcionar.

Gracias por adelantado

preguntado el 09 de enero de 11 a las 10:01

Por qué reorientar cliente entonces? Elimine su regla de redireccionamiento (o simplemente elimine el indicador de redireccionamiento), si no desea redirigir, perderá los datos POST. -

1 Respuestas

Su regla "agregar barra inclinada final" fuerza un redireccionamiento de encabezado:

 [R=301,L]

una redirección de encabezado eliminará los valores POST.

Tendrá que eliminar esa regla o deshabilitarla para los envíos POST:

# Forces a trailing slash to be added

RewriteCond %{REQUEST_METHOD}  !=POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

Respondido el 09 de enero de 11 a las 15:01

A menudo veo que la gente usa solo comparaciones basadas en expresiones regulares, pero no basadas en cadenas: RewriteCond %{REQUEST_METHOD} !=POST. ¿Por qué? ;-) - zerkms

@zerkms fair point :) Para ser honesto, ni siquiera sabía que la notación era posible. Gracias, arreglado - Pekka

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.