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

Php 如何通过.htaccess重定向所有POST请求?,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,因此,我希望通过表单提交或通过AJAX发出的所有POST请求都被重定向到一个文件,例如位于根目录之外的postManager.php,如下所示: _post | ---postManager.php | public_html // root directory | ---file_one.php | ---file_two.php RewriteEngine on RewriteCond %{SERVER_PORT} !443 RewriteCond %{REQUEST_METHOD} PO

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

_post
| ---postManager.php
|
public_html // root directory
| ---file_one.php
| ---file_two.php
RewriteEngine on
RewriteCond %{SERVER_PORT} !443
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^(.*)$ http://%{HTTP_HOST}/..? <-- and that's where I'm lost
RewriteEngine on
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^(.*)$ postManager.php [QSA,L=307]
请求可能通过$.postfile_two.php从文件_one.php发出;例如,它所需要的是使用所有$\u POST数据转到postManager.php,以便处理它。考虑到它是共享主机,我只能访问.htaccess,我想从这里开始。 到目前为止,我已经尝试过这样的方法:

_post
| ---postManager.php
|
public_html // root directory
| ---file_one.php
| ---file_two.php
RewriteEngine on
RewriteCond %{SERVER_PORT} !443
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^(.*)$ http://%{HTTP_HOST}/..? <-- and that's where I'm lost
RewriteEngine on
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^(.*)$ postManager.php [QSA,L=307]

如果您对此有任何帮助,请解释清楚,我们将不胜感激

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

例如:

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

我希望这会有所帮助。

…事实上,经过一定次数的尝试,我最终得到了代码解决方案:

下面是我的贴子ajax,它是从任何项目文件夹中的任何文件制作的,直接指向根文件夹或其他文件夹:

$.post( "/" , { variable : "myVar" } );
在本例中,它会转到mydomain.com,但实际上不会,因为它被.htaccess重定向捕获了一半,如下所示:

_post
| ---postManager.php
|
public_html // root directory
| ---file_one.php
| ---file_two.php
RewriteEngine on
RewriteCond %{SERVER_PORT} !443
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^(.*)$ http://%{HTTP_HOST}/..? <-- and that's where I'm lost
RewriteEngine on
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^(.*)$ postManager.php [QSA,L=307]
postManager.php:

print_r($_POST);
如果我通过.donefunctiondata{console.logdata}请求响应;它给了我:

Array ( [variable] => Myvar )
是否有人对这段代码有任何额外的建议或意见,因为我不确定它是否正确和安全,以及它是否完全按照我描述的方式工作。。
提前谢谢

因此,将ajax调用的url属性设置为postManager.phpy您基本上可以创建一个php文件并发送ajax请求,以告诉它将数据发送到哪里,而不需要将此内容包含在文件中。htaccess@JosephWilliamson好的,那么如何将_post/postManager.php设置为目标,如果它位于根文件夹public_html之外,那么ajax实际运行情况如何?您可以为它应该执行的ajax请求设置一个绝对url,毕竟,这基本上是第一条评论中所说的,但这是一个要点,更不用说ajax+中的实际目标文件了。这样,我无法将请求直接发送到public_html之外的目录。明白我的意思吗?这是一种非传统的方式,但我明白你的意思。你可能担心有人拿着那个文件四处窥探。有很多方法可以解决这个问题,但重定向并不是最好的:@BenGarb我有点同意你的观点,但我认为.htaccess重定向仍然是隐藏可执行文件任何位置的安全方法,是吗?@Bohdan没有权限访问您的服务器的用户无法查看您编写的任何php代码,但是您主要关心的应该是有人使用它向您的服务器发送数据,但只要您使用准备好的语句并避开输入,您就不必太担心