Php .htaccess不允许$u POST变量带有ErrorDocument 404

Php .htaccess不允许$u POST变量带有ErrorDocument 404,php,ajax,apache,.htaccess,mod-rewrite,Php,Ajax,Apache,.htaccess,Mod Rewrite,我正在构建一个基于MVC框架的CMS,我也在构建,但我被困在这里了。完整代码可在上找到 好的,我遇到的问题是.htaccess文件: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] Rewrit

我正在构建一个基于MVC框架的CMS,我也在构建,但我被困在这里了。完整代码可在上找到

好的,我遇到的问题是.htaccess文件:

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php?/$1 [L]
 RewriteCond %{REQUEST_METHOD} !POST [NC]
</IfModule>

<IfModule !mod_rewrite.c>
   ErrorDocument 404 /index.php
</IfModule>
当我跑步时:

$username = $_POST['username'];
$password = $_POST['password'];
$token = $_POST['token'];
$postdata = array('username' => $username, 'password' => $password, 'token' => $token);
print_r($post_data);
print_r($_SERVER);
我得到:

Array (
    [username] => 
    [password] => 
    [token] => 
)
Array(
[REDIRECT_REQUEST_METHOD] => POST
[REDIRECT_STATUS] => 404
[HTTP_HOST] => [omitted]
[HTTP_CONNECTION] => keep-alive
[CONTENT_LENGTH] => 71
[HTTP_ACCEPT] => application/json, text/javascript, */*; q=0.01
[HTTP_ORIGIN] => [omitted]
[HTTP_X_REQUESTED_WITH] => XMLHttpRequest
[HTTP_USER_AGENT] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36
[CONTENT_TYPE] => application/x-www-form-urlencoded; charset=UTF-8
[HTTP_REFERER] => [omitted]/auth
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8,fr;q=0.6
[PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[SERVER_SIGNATURE] => <address>Apache/2.4.7 (Ubuntu) Server at [omitted] Port 80</address>

[SERVER_SOFTWARE] => Apache/2.4.7 (Ubuntu)
[SERVER_NAME] => [omitted]
[SERVER_ADDR] => [omitted]
[SERVER_PORT] => 80
[REMOTE_ADDR] => [omitted]
[DOCUMENT_ROOT] => [omitted]
[REQUEST_SCHEME] => http
[CONTEXT_PREFIX] => 
[CONTEXT_DOCUMENT_ROOT] => [omitted]
[SERVER_ADMIN] => webmaster@localhost
[SCRIPT_FILENAME] => [omitted]/public_html/index.php
[REMOTE_PORT] => 60135
[REDIRECT_URL] => /auth/login
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] => 
[REQUEST_URI] => /auth/login
[SCRIPT_NAME] => /index.php
[PHP_SELF] => /index.php
[REQUEST_TIME_FLOAT] => 1447625662.493
[REQUEST_TIME] => 1447625662
)
数组(
[用户名]=>
[密码]=>
[令牌]=>
)
排列(
[重定向\u请求\u方法]=>POST
[重定向\u状态]=>404
[HTTP_HOST]=>[省略]
[HTTP\u连接]=>保持活动状态
[内容长度]=>71
[HTTP_ACCEPT]=>application/json,text/javascript,*/*;q=0.01
[HTTP_ORIGIN]=>[省略]
[HTTP\u X\u请求的\u与]=>XMLHttpRequest
[HTTP_USER_AGENT]=>Mozilla/5.0(Macintosh;英特尔Mac OS X 10_8_3)AppleWebKit/537.36(KHTML,如Gecko)Chrome/46.0.2490.86 Safari/537.36
[CONTENT\u TYPE]=>application/x-www-form-urlencoded;charset=UTF-8
[HTTP\u REFERER]=>[省略]/auth
[HTTP\u ACCEPT\u ENCODING]=>gzip,deflate
[HTTP\u ACCEPT\u LANGUAGE]=>en-US,en;q=0.8,fr;q=0.6
[路径]=>/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/sbin:/bin
[服务器签名]=>Apache/2.4.7(Ubuntu)服务器位于[省略]端口80
[服务器软件]=>Apache/2.4.7(Ubuntu)
[服务器名称]=>[省略]
[服务器地址]=>[省略]
[服务器端口]=>80
[远程地址]=>[省略]
[文档\u根]=>[省略]
[请求\u方案]=>http
[上下文前缀]=>
[CONTEXT\u DOCUMENT\u ROOT]=>[省略]
[服务器管理]=>webmaster@localhost
[SCRIPT\u FILENAME]=>[pre略t]/public\u html/index.php
[远程_端口]=>60135
[重定向\u URL]=>/auth/login
[网关接口]=>CGI/1.1
[服务器协议]=>HTTP/1.1
[请求\u方法]=>获取
[查询字符串]=>
[请求URI]=>/auth/login
[SCRIPT_NAME]=>/index.php
[PHP_SELF]=>/index.PHP
[请求时间浮动]=>1447625662.493
[请求时间]=>1447625662
)
我知道上面的代码块是有效的,因为我在一个静态的“test.php”文件上尝试过它,它输出这个ajax请求提交的用户名/密码/方法信息

我真的觉得问题出在我的.htaccess文件中,因为当我强制使用200OK头时,它仍然认为它是404或其他什么?我不确定,但它正在清除$u邮件。这个问题与我的php.ini或apache2.conf无关,因为我已经测试过了,并且我能够接收post数据,而不是发送到的ErrorDocument 404/index.php。这就是我在解析发送给控制器的URL时用来阻止404页面的方法


任何帮助都将不胜感激

如果您遇到了与我相同的问题,而其他问题似乎都不起作用,则可能是apache模块重写“mod_rewrite”未处于活动状态

运行命令:
sudoa2enmod rewrite

然后重新启动apache服务器:
sudo服务apache2 restart

我假设mod_rewrite处于活动状态。您的
.htaccess
文件中必须有更多内容。你没有任何重定向,只有一次重写。最后还有一个悬而未决的
RewriteCond
。@OlafDietsche事实上,在你发布这篇文章后,我回去检查了mod_rewrite是否处于活动状态,结果证明它是正确的答案。你应该考虑把它作为一个主要的答案,我会把我标记为正确的答案。我相信比我更多的人有这个问题。我很高兴我的评论有帮助。你是。
Array (
    [username] => 
    [password] => 
    [token] => 
)
Array(
[REDIRECT_REQUEST_METHOD] => POST
[REDIRECT_STATUS] => 404
[HTTP_HOST] => [omitted]
[HTTP_CONNECTION] => keep-alive
[CONTENT_LENGTH] => 71
[HTTP_ACCEPT] => application/json, text/javascript, */*; q=0.01
[HTTP_ORIGIN] => [omitted]
[HTTP_X_REQUESTED_WITH] => XMLHttpRequest
[HTTP_USER_AGENT] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36
[CONTENT_TYPE] => application/x-www-form-urlencoded; charset=UTF-8
[HTTP_REFERER] => [omitted]/auth
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8,fr;q=0.6
[PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[SERVER_SIGNATURE] => <address>Apache/2.4.7 (Ubuntu) Server at [omitted] Port 80</address>

[SERVER_SOFTWARE] => Apache/2.4.7 (Ubuntu)
[SERVER_NAME] => [omitted]
[SERVER_ADDR] => [omitted]
[SERVER_PORT] => 80
[REMOTE_ADDR] => [omitted]
[DOCUMENT_ROOT] => [omitted]
[REQUEST_SCHEME] => http
[CONTEXT_PREFIX] => 
[CONTEXT_DOCUMENT_ROOT] => [omitted]
[SERVER_ADMIN] => webmaster@localhost
[SCRIPT_FILENAME] => [omitted]/public_html/index.php
[REMOTE_PORT] => 60135
[REDIRECT_URL] => /auth/login
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] => 
[REQUEST_URI] => /auth/login
[SCRIPT_NAME] => /index.php
[PHP_SELF] => /index.php
[REQUEST_TIME_FLOAT] => 1447625662.493
[REQUEST_TIME] => 1447625662
)