2011-01-09 21 views
7

Diese Frage ist sehr ähnlich zu: Is it possible to redirect post data? (fragte eariler), aber diese Antwort scheint nicht für mich arbeiten.Umleiten POST htaccess

Ich habe eine Form:

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

und innerhalb einer Add-on-Domäne (test.com ist ein Add-on), gibt es eine Sub-Domain ist (a.), Und im Innern von dort habe ich eine Datei item.php und .htaccess

meine .htaccess ist wie folgt:

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] 

Anmerkung: ich habe es als [NC, L], denn wenn ich es zu [NC, P] es gibt mir Ein 500 Server Fehler.

und mein item.php

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

und egal, was die Form enthält, ist der $ _POST leer ... aber wenn ich http://a.test.com/item.php?user=contact als Aktion zu tun.

alles geht gut. POSTing überspringt den htaccess und die Lösung auf SO scheint nicht zu funktionieren.

Vielen Dank im Voraus

+1

Warum Sie ** ** umleiten Client dann? Entfernen Sie die Weiterleitungsregel (oder entfernen Sie nur das Redirect-Flag), wenn Sie nicht umleiten möchten, und verlieren Sie so die POST-Daten. – zerkms

+0

mögliches Duplikat von [.htaccess - Kann Postdaten umgeleitet werden?] (Http://stackoverflow.com/questions/358263/htaccess-is-it-possible-to-redirect-post-data) –

Antwort

17

Ihr "add Schrägstrich" Regel einen Kopf Umleitung zwingt:

[R=301,L] 

eine Header-Weiterleitung wird POST Werte fallen.

Sie diese Regel fallen müssen, oder deaktivieren Sie es für POST Einreichungen:

# 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

sehe ich oft dass Leute nur Regex-basierte Vergleiche benutzen, aber nicht stringbasiert: 'RewriteCond% {REQUEST_METHOD}! = POST'. Warum? ;-) – zerkms

+1

@zerkms fair point :) Um ehrlich zu sein, war mir nicht einmal bewusst, dass Notation möglich war. Danke, behoben –