0

まず、ここに私の .htaccess があります:

RewriteEngine On
Options FollowSymLinks

# check if url ends in a slash and if it does redirect to same url without one
RewriteCond %{REQUEST_URI} !-d 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(([^/]+/)*([^/.]+))/\ HTTP/
RewriteRule ^(([^/]+/)*([^/.]+))/$ http://localhost/example/$1 [R=301,L]

# extionless url rewrite for urls in form example.com/cmd
RewriteRule ^([^/.]+)$ index.php?cmd=$1 [L,QSA]

# extionless url rewrite for urls in form example.com/cmd/action
RewriteRule ^([^/]+)/([^/.]+)$ index.php?cmd=$1&action=$2 [L,QSA]

# extionless url rewrite for urls in form example.com/cmd/ajax
RewriteRule ^([^/]+)/([^/]+)/([^/.]+)$ index.php?cmd=$1&action=$2&ajax=$3 [L,QSA]

したがって、これは URL の書き換えに問題なく機能します。しかし、フォームを PHP に送信した後に Firebug でリクエストを確認すると、ステータスは 303 Move Permanently です。問題は次の行にあると確信しています。

RewriteRule ^(([^/]+/)*([^/.]+))/$ http://localhost/example/$1 [R=301,L]

しかし、私はそれを修正する方法がわかりません。mod_rewrite が機能的に行っていることを正確に実行し続けたいのですが、この問題を修正する必要があります。

助けてくれてありがとう!

編集: また、jquery .ajax を使用して JavaScript から PHP にデータを送信し、投稿するタイプがある場合、それは機能することにも言及したいと思います。また、 $_GET は何があっても機能します。HTML から PHP に送信すると、$_POST だけが機能しません。

4

1 に答える 1

2

クライアント側のリダイレクトを強制しています。つまり、ブラウザーは指定された新しいページを GET 経由で要求します。フォーム データが失われている場所です。新しいページは POST 経由でロードされないため、POST データはリダイレクトでは保持されません。

于 2012-07-09T21:46:06.503 に答える