我在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,但我的问题是不同的。有了我,表单提交但没有携带任何值。
答案 0 :(得分:1)
在RewriteBase
行下面插入此规则,以避免重定向POST请求:
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^ - [L]