Как перенаправить все запросы POST через .htaccess?

Итак, я хочу, чтобы все 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

Будем признательны за любую помощь в связи с этим с четким объяснением!

Поэтому установите свойство url вызова ajax на postManager.php

RiggsFolly 18.03.2019 19:57

По сути, вы можете создать файл php и отправить запрос ajax, чтобы сообщить ему, куда отправлять данные, нет необходимости, чтобы это было чем-то в .htaccess.

CoderJoe 18.03.2019 19:59

@JosephWilliamson хорошо, тогда как установить _post/postManager.php в качестве пункта назначения, если он находится за пределами корневой папки (public_html), откуда на самом деле идет ajax?

Bohdan 18.03.2019 20:23

вы можете установить абсолютный URL-адрес для запроса ajax "мой домен/postManager.php"

CoderJoe 18.03.2019 20:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Пример:

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

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

Так и должно быть, в конце концов, это в основном то, что сказано в первом комментарии.

RiggsFolly 18.03.2019 20:06

но важно не упоминать фактический файл назначения в ajax + таким образом, я не могу направить запрос в каталог снаружи public_html понимаете, что я имею в виду?

Bohdan 18.03.2019 20:18

Это нетрадиционный способ сделать это, но я понимаю, что вы имеете в виду. Вы, вероятно, беспокоитесь о том, что люди будут копаться в этом файле. Есть много способов исправить это, но перенаправление не лучший :(

Azael 18.03.2019 20:24

@BenGarb Я согласен с вами здесь, но я думаю, что перенаправление .htaccess по-прежнему является каким-то безопасным способом скрыть любое расположение исполняемых файлов, не так ли?

Bohdan 18.03.2019 20:26

@Bohdan Пользователь, не имеющий доступа к вашему серверу, не может увидеть какой-либо php-код, который вы написали, однако вашей главной заботой должен быть кто-то, кто использует это для отправки данных на ваш сервер, но пока вы используете подготовленные операторы и экранируете вход вы не должны слишком беспокоиться

CoderJoe 18.03.2019 20:31

Я предполагаю, что этот файл выполняется из административной части сайта (где вошел пользователь-администратор), особенно если вы выполняете операции, вызывающие базу данных. Если вы делаете это, то вам не о чем беспокоиться.

Azael 18.03.2019 20:34

@JosephWilliamson Недурно

Azael 18.03.2019 20:35
Ответ принят как подходящий

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

Итак, вот мой пост 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.info(data)});, он мне его даст:

Array ( [variable] => Myvar )

Есть ли у кого-нибудь дополнительные предложения или комментарии относительно этого кода, потому что я не уверен, что он правильный и безопасный, и работает ли он именно так, как я его описал. Заранее спасибо!

Другие вопросы по теме