我的.htaccess似乎在GET中重写了我的URL,而不是维护POST

时间:2014-07-26 21:54:58

标签: php .htaccess mod-rewrite

我有以下.htaccess:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /

RewriteRule ^.*$ /dispatcher.php

我的目标是所有请求都将通过我的调度程序(因为我自己编写了一个伪api,我的调用/网址只会执行操作,而不是检索文件,数据等)< / p>

不幸的是,当我通过POST方式调用我的网站时,我的调度员告诉我(通过$_SERVER['REQUEST_METHOD'])我的请求是GET request,而我的POST data全部丢失了。

如何将请求方法维护为POST

更新:通过浏览器检查我的请求回复后,回复是 404找不到页面,但页面仍然正确显示。也许该方法被设置为GET,因为它是404重定向?但是,仍然没有更接近理解会导致这种情况的原因。

尽管404响应很奇怪,但我知道我的.htaccess正在工作,因为注释掉了重写规则,如果我要调用一个带有子目录的URL,则通过一个正确的404页面(正确的)页面上显示的信息)。但是,使用重写规则,响应将返回404状态,但页面正确显示(请求方法除外)。

更新:根据HamZa的提及,没有更多的代码可供展示;我有一个简单的表单,使用POST请求调用服务器,以便(尝试)触发POST方法。我认为问题来自于我的htaccess没有正确重写URL,因为调用我的基本URL会正确调用GET和POST,但如果我添加其他URL数据(例如domain.com//,其中模块和操作是我传递给服务器以调用正确的模块和功能的数据),它将返回404响应状态,仍然具有正确的数据。

1 个答案:

答案 0 :(得分:0)

尝试在.htaccess之上添加ErrorDocument 404 default行,以禁用404的任何自定义错误处理:

ErrorDocument 404 default

Options +FollowSymlinks
RewriteEngine on
RewriteBase /

RewriteRule !^dispatcher\.php$ dispatcher.php [L,NC]