2011-01-09 30 views
7

Esta pregunta es muy similar a: Is it possible to redirect post data? (preguntó el titular) pero esa respuesta no parece funcionar para mí.Redireccionar POST htaccess

I tienen una forma:

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

y en el interior de un dominio adicional, (test.com es un complemento), hay un subdominio (a.), Y en el interior de allí tengo una presentar 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 500 servidores

y mi item.php

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

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

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

Gracias de antemano

+1

¿Por qué ** ** redirigir cliente entonces? Elimine su regla de redireccionamiento (o simplemente elimine la bandera de redireccionamiento), si no desea redireccionar, pierda así los datos POST. – zerkms

+0

posible duplicado de [.htaccess - ¿Es posible redirigir los datos de la publicación?] (Http://stackoverflow.com/questions/358263/htaccess-is-it-possible-to-redirect-post-data) –

Respuesta

17

Su "añadir una barra final" regla obliga a un redireccionamiento de cabecera:

[R=301,L] 

una redirección cabecera bajará los valores POST.

Tendrá que dejar esa regla, o desactivarlo para la presentación de la publicación:

# 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] 
+5

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

+1

@zerkms punto justo :) Para ser sincero, ni siquiera era consciente de que la notación era posible. Gracias, arreglado –

Cuestiones relacionadas