2011-01-09 16 views
7

この質問は、Is it possible to redirect post data?(ask earler)と非常によく似ていますが、その回答は私にとってはうまくいかないようです。リダイレクトPOST htaccess

Iの形式を持っている:

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

とアドオンドメインの内部、(test.comがアドオンである)がサブドメイン(。)であり、そしてそこの内部私は

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] 

注:私は、[NC、P]にそれを変更したときに、それは私を与えるので、私は[NC、L]としてそれを残し、次のように私のhtaccessファイルがあるitem.phpファイル、と.htaccess

500サーバーエラー。

と私のitem.php

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

と関係なく、フォームが含まれているものを私はアクションとしてhttp://a.test.com/item.php?user=contactをすれば、$ _POSTのは、しかし...空白になっています。

すべてが順調です。 POSTingはhtaccessをスキップし、SOのソリューションは動作していないようです。事前に

おかげ

+1

なぜあなたは**、その後**クライアントをリダイレクトするのですか?リダイレクトしたくない場合は、リダイレクトルールを削除して(またはリダイレクトフラグを削除するだけで)、POSTデータが失われます。 – zerkms

+0

[.htaccessの複製が可能 - 投稿データをリダイレクトすることはできますか?](http://stackoverflow.com/questions/358263/htaccess-is-it-possible-to-redirect-post-data) –

答えて

17

は、あなたの「末尾のスラッシュを追加する」ルールはヘッダのリダイレクトを強制的に:

[R=301,L] 

ヘッダリダイレクトはPOST値をドロップします。あなたはそのルールをドロップしなければならない、または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] 
+5

よく見る人々は正規表現ベースの比較のみを使用しますが、文字列ベースの比較は使用しません: 'RewriteCond%{REQUEST_METHOD}!= POST'。どうして? ;-) – zerkms

+1

@zerkms fair point :)正直言って、私は表記が可能であることに気づいていませんでした。ありがとう、固定 –