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

问题描述 投票:0回答:2

因此,我希望通过表单提交或通过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

将有明确的解释,感谢任何有关此问题的帮助!

php .htaccess mod-rewrite
2个回答
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 )

有没有人对此代码有任何额外的建议或意见,因为我不确定它是否正确和安全,以及它是否与我所描述的方式完全一致..提前感谢!


0
投票

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

例:

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

我希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.