Как перенаправить все POST-запросы через .htaccess? - PullRequest
0 голосов
/ 18 марта 2019

Итак, я хочу, чтобы все запросы POST, которые были сделаны при отправке формы или через AJAX, были перенаправлены в один отдельный файл (например, 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 ]

1 голос
/ 18 марта 2019

... на самом деле, после определенного количества попыток я в итоге получил такое решение для кода:

Итак, вот мой пост 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 голосов
/ 18 марта 2019

Ваш запрос Ajax должен указывать на местоположение postManager.php. Вам не нужно изменять файл .htaccess для этого.

Пример:

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...