更新:PHP问题中的mod_rewrite和POST方法,$ _POST始终为空

时间:2011-05-21 03:12:01

标签: php apache forms post

我使用mod_rewrite以更易读的方式显示页面的地址,而不是

http://127.0.0.1/index.php?article=contact

我得到了

http://127.0.0.1/contact

当我发送表单时,全部由index.php处理,所以我将表单的动作直接指向当前显示的页面,但$ _POST始终为空,打开表单块看起来像这样

<form method="post" action="http://127.0.0.1/contact">

在我推出mod_rewrite之前一切都很好,但是现在mod_rewrite似乎会引起问题。

请告诉我在PHP,Apache配置文件中应该做些什么改变,或者让其他方法做什么让$ _POST与重写endabled一起工作

以下是请求的重写规则

RewriteEngine on
#RewriteCond %{HTTP_HOST} !^www\.
#RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteRule \.(css|jpe?g|gif|png)$ - [L]
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
RewriteRule ^([^/\.]+)/?$ index.php?page=$1 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?page=$1&va=$2 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?page=$1&va=$2&vb=$3 [L]

提前致谢

阿米尔

1 个答案:

答案 0 :(得分:2)

此重写规则执行重定向,因此浏览器将使用GET请求转到此地址;因此,POST数据将始终为空。

RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]