Intereting Posts
Отменить текст в php из текста с текстом на уровне предложения Регулярное выражение в preg_replace для определения формата url и элементов выделения Соединение Pdo без имени базы данных? Preg Replace / Preg Match для href в html-ссылке? отображение wordpress external ip, полученного от gae, в мой домен Публикация данных с android на PHP URL-адрес страницы Google Analytics для разбивки страницы на страницу и идентификацию следующей страницы IIS WordPress, вызывающий ошибку Curl 18 Передача массива в SOAP-функцию в PHP Как восстановить старый сеанс, когда пользователь случайно закрывает браузер? Примечание. Массив для преобразования строк в C: \ xampp \ htdocs \ example \ echo.php в строке 8 Array Генерировать криптографически безопасные случайные числа в php Использовать файл чтения php () или перенаправить для отображения файла изображения? Отображать изображения по очереди со следующей и предыдущей функциональностью Разрешить отправку пользователем HTML в PHP

Как сохранить данные POST через ajax-запрос после перенаправления .htaccess?

.htacesss

RewriteCond %{REQUEST_URI} ^/api/(.+)$ RewriteRule ^api/(.+)$ /index.php?api=%1 [QSA,L] 

Пример запроса ajax url: 'http://hostname.com/api/ext/list.php?query=de'

Я хочу, чтобы иметь возможность перенаправить URL-адреса в этом формате на следующий index.php? Api = {request_filename} & param1 = value1 & param2 = value2 …

потому что весь сайт обрабатывается посредством процесса начальной загрузки в index.php, который имеет конфигурацию загрузки маршрутизации, шаблоны и т. д. …

Например, когда я пытаюсь выполнить код jquery, данные POST теряются после перенаправления.

 $.ajax({ url: '/api/contact.php', type: 'POST', data: { email: $("#contactEmail").val(), name: $("#contactName").val(), message: $("#contactMessage").val() // etc ... } }); 

Я читал, что вы не можете сохранять данные в перенаправлении http. Но как все рамки избегают этого? Я кодировался во многих, и каждый из них загружается через index.php, и в файле .htaccess есть правила перезаписи для включения хороших URL-адресов. Так, например, в Yii я бы назвал URL-адрес «api / uploads / latests.json» с некоторыми данными POST, и контроллеры на бэкэнд будут получать эти данные. Что мне здесь не хватает?

note: Я тестировал параметр [P] mod_rewrite, и я думаю, что на этом сервере не поддерживается mod_proxy.

Существует разница между переписыванием и перенаправлением.

Rewrite – это модуль apache (и других серверов), который будет следовать набору cond / rules для сопоставления запрошенного URL-файла с файлами на сервере (например: bootstrap переписывает все URL-адреса в один файл, обычно index.php. map / model / controller / просмотреть uri в index.php, который вызывает соответствующие файлы mvc).

Переадресация фактически изменяет страницу, на которой вы находитесь. Кто-то запрашивает страницу A.php, и эта страница говорит, что «то, что вы ищете, находится на B.php», и поэтому ваш браузер переходит на B.php.

Переписывание сохранит параметры сообщения, потому что URL-адрес не изменяется. Переписывание просто изменит запрашиваемый скрипт, но в браузере похоже, что страница по-прежнему существует по запрошенному URL-адресу.

Перенаправление не будет сохранять параметры сообщения, потому что сервер перенаправит вас на другую страницу полностью.

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

Чтобы исправить это, как вы проверяете в index.php, что нет параметров сообщений? Вы уверены, что контроллер, которого вы ожидаете, вызван?

Все данные POST теряются при перенаправлении. Невозможно сохранить его с помощью правил htaccess rewrite / redirect.

Переадресация (все 301,302,303), полученная клиентом (все основные браузеры, которые я знаю), рассматривается как новый URL-адрес для запроса GET. Браузеры не будут автоматически ссылаться на старые параметры сообщения на этот URL-адрес, даже если источником перенаправления был запрос POST.

Единственный способ, которым я все это нашел, – это переписать внутренний код и скрывать параметры POST для параметров GET и вставлять их в конец нового URL-адреса. В php вы затем выдаете изменение местоположения заголовка (или любой другой вызов переадресации, который использует ваша библиотека):

 header("Location: http://www.example.com/?my_old_post_args=123"); exit; 

для любой из них есть эта проблема, у меня есть проблема с sam, и я использую что-то вроде этого

 RewriteRule ^services/MainService/(.*)$ http://193.9.162.91/mobile-feed/mobile.list.news.images.php?original_request=$1 [R=301,L] 

это не будет работать с ajax-сообщением, я должен переписать RewriteRule на

 RewriteRule ^services/MainService/(.*)$ http://193.9.162.91/mobile-feed/mobile.list.news.images.php?original_request=$1 [QSA,L] 

эта работа и в php-файле у меня есть

 $inputJSON = file_get_contents('php://input'); $input= json_decode( $inputJSON, TRUE ); //convert JSON into array print_r($input);