如何通过.htaccess重定向所有POST请求?

时间:2019-03-18 18:56:52

标签: php .htaccess mod-rewrite

因此,我希望将所有通过表单提交或通过AJAX发出的POST请求重定向到位于根目录外部的一个文件(例如postManager.php),如下所示:

_post
| ---postManager.php
|
public_html // root directory
| ---file_one.php
| ---file_two.php

例如,请求可能从file_one.php$.post("file_two.php");,并且要求将所有postManager.php数据一起转到$_POST,因此它可以被处理。考虑到它是共享托管,我只能访问.htaccess,并且我想从这里进行访问。 到目前为止,我已经尝试过这样的事情:

RewriteEngine on
RewriteCond %{SERVER_PORT} !443
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^(.*)$ http://%{HTTP_HOST}/..? <-- and that's where I'm lost

将感谢您提供任何帮助,并提供清晰的解释!

2 个答案:

答案 0 :(得分:1)

...实际上,经过多次尝试后,我最终得到了该代码解决方案:

所以,这是我的帖子ajax,它是由任何项目文件夹中的任何文件直接指向根文件夹制成的:

$.post( "/" , { variable : "myVar" } );

在这种情况下,它转到mydomain.com,但实际上却没有,因为它被.htaccess重定向捕获到一半,如下所示:

RewriteEngine on
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^(.*)$ postManager.php [QSA,L=307]

postManager.php:

print_r($_POST);

如果我通过.done(function(data){console.log(data)});请求答复,它就会给我:

Array ( [variable] => Myvar )

是否有人对此代码有任何其他建议或评论,因为我不确定它是否正确和安全,以及它是否完全按照我所描述的方式工作。 预先感谢!

答案 1 :(得分:0)

您的Ajax请求应指向postManager.php的位置。您无需为此修改.htaccess文件。

示例:

$.ajax({
    url : 'post/postManager.php',
    type : 'POST',
    data : {},
    dataType: 'json',
    success : function(data) {}
});

我希望有帮助。