次のようなルールがあります。
RewriteCond %{HTTP_HOST}:%{QUERY_STRING} ^(\w+)\.t(.*)\.(\w+)?\.sprawk\.com:(.*)$
RewriteRule ^(.*) /api/translateHtmlPublic?tl=%1&su=%2&p=$1&q=%4 [B,PT,L]
これは GET リクエストに最適です。
ただし、POST 要求の場合、q パラメータは null ですが (これは予想していました)、Java サーブレット内では と の両方でHttpServletRequest.getReader()
データが提供されHttpServletRequest.getInputStream()
ません。
Firefox Live ヘッダーを使用すると、以下を送信していることがわかります。
POST /uid/contactSend.cfm HTTP/1.1
Host: fr.t51940.local.sprawk.com
Connection: keep-alive
Referer: http://fr.t51940.local.sprawk.com/uid/contact.cfm?country=137
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 146
userName=Nic&queryCountry=Libya&queryCode=137&userEmail=n.cottrell%40idea.int&Comment=Just+testing&captcha=Quotas&Submit=--+Envoyer+Commentaire+--
メソッドがトリガーされるPOST
ため、サーブレットがそれを として受け取っていることがわかります。doPost
Apache 2.x が単純な書き換え中に POST データを自動的に保存する必要があることは理解していますが、パラメーターの追加によってコンテンツ データが消去されているのではないでしょうか?
更新: userName、queryCountry、queryCode パラメーターがrequest.getParameter(String)
メソッドを介して正しい値を取得していることに気付きました (すべてのパラメーターをダンプすることにより)。問題は、元のフォーム パラメータ名を、RewriteRule で紹介したものから分離できるようにする必要があることです。