.htaccess将所有带有数据的POST请求重定向到文件

时间:2017-07-31 03:19:49

标签: php apache .htaccess redirect

我在子文件夹(www.domain.com/API/)中有一个.htaccess文件,我需要将此子文件夹的所有POST请求重定向到子文件夹中的文件中(www.domain.com/API) /Sub/manager.php)

我必须说所有POST请求都有数据(2-10个参数),所有数据也都是重定向。

我已经阅读了一些帖子和页面,但他们无法解决我的情况。

我有这条规则:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ https://www.example.net/API/Sub/manager.php [QSA,L]

然而,我有类似的东西:

  

302 Found - >该文件已移动(链接至   ww.domain.com/API/Sub/manager.php)

有人可以告诉我我做错了什么吗?

提前谢谢。

P.S。 这些是我研究的一些页面:

Redirect POST htaccess

Seems like POST values are lost when .htaccess RewriteRule used. GET values are OK. How to fix?

.htaccess redirect all sub-directories to file

1 个答案:

答案 0 :(得分:3)

您使用的是错误的状态代码。简而言之,302代码不要求浏览器重新传输所有数据(POST请求);你需要使用307代码。

要在Apache下执行此操作,请将最后一条规则更新为以

结尾
  

[QSA,L,R = 307]

如果您对POST数据感兴趣,则甚至不需要QSA标记。<​​/ p>

有关血腥的详细信息,您可以查看HTTP状态代码的完整列表及其含义here。 302代码无法按照您希望的方式运行的原因在协议页面上显式调出如下(强调我的)

  

注意:RFC 1945和RFC 2068指定不允许客户端   更改重定向请求的方法。但是,大多数   现有的用户代理实现将302视为303   响应,无论如何都对位置字段值执行GET   原始请求方法。状态代码303和307具有   已添加到希望明确清楚哪些服务器的服务器   对客户的反应是预期的。