使用.htaccess文件扩展名卸妆代码时,网站表单不带任何值

时间:2014-06-10 10:14:47

标签: php apache .htaccess mod-rewrite

我在HTACCESS文件中有这个代码,它可以正常工作,因为它删除.php文件扩展名。它还允许页面无需扩展加载。

# For security reasons, Option followsymlinks cannot be overridden.
#Options +FollowSymLinks -MultiViews
Options +SymLinksIfOwnerMatch -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]

它工作正常。问题是当我使用此代码时

<form action="test.php" method="post" id="myform" name="myform">
<input type="text"  name="username">
<input type="submit" value="login">
</form>

on test.php echo $_REQUEST['username'];为空/ null。

我尝试从表单操作中删除.php然后它工作了。但是我无法从网站中使用的所有文件中删除.php。

对于重复的标记:我读了这个post,但我的问题是不同的。有了我,表单提交但没有携带任何值。

1 个答案:

答案 0 :(得分:1)

RewriteBase行下面插入此规则,以避免重定向POST请求:

RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^ - [L]