Как переписать POST-запрос из формы в удобный URL-адрес с помощью htaccess? - PullRequest
1 голос
/ 20 декабря 2011

Как тема - как переписать POST-запрос из формы в удобный URL-адрес с помощью htaccess?

Сценарий:

У меня есть веб-страница, которая использует форму поиска. Когда я отправляю эту форму, используя method = "post" , она работает безупречно. НО я не получаю никакого текста в адресной строке браузера (конечно), но это именно то, что я хочу! И что при использовании method = "POST" , NOT method = "GET" !

Допустим, я ищу "банан". Скрипт PHP переводит POST-запрос, и скрипт показывает все чеки со словом banana. Но тогда URL, конечно, показывает что-то вроде http://www.example.com/search/ (да, для этого я использую mod_rewrite). Я хочу, чтобы URL выглядел как http://www.example.com/search/banana/.

Исходный запрос с сервера выглядит следующим образом: .... = поиск и д = банан.

Я не новичок в правилах и условиях mod_rewrite, но просто не могу заставить его работать ...

Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 21 декабря 2011

Цитируется из: Apache mod_rewrite вопрос

Вы не можете использовать данные POST для mod_rewrite. Это связано с тем, что данные POST находятся не в заголовке HTTP-запроса, а в теле.

Мое предложение заключается в том, чтобы вы выполнили на странице публикации действие, которое добавляет префикс к URL-адресу, что означает, что вам даже не нужно переписывать.

0 голосов
/ 21 декабря 2011

Вам понадобится JavaScript.

Я уже отвечал на подобный вопрос раньше.Когда кто-то нажимает на кнопку отправки, вам нужно изменить атрибут action в теге form.

0 голосов
/ 21 декабря 2011

Если я правильно понимаю: вы хотите, чтобы браузер POST набрал http://www.example.com/search/banana/, а не http://www.example.com/search/, где banana - это одно из полей ввода формы.(Это правда?) Это не проблема mod_rewrite, а проблема HTML: это происходит на стороне клиента.А поскольку HTML не поддерживает это, на самом деле это проблема JavaScript.Вы должны написать либо обработчик on- submit для вашей формы, либо обработчик on- change для поля ввода.В любом случае обработчик должен будет изменить action формы на основе содержимого поля ввода.

(Примечание. Вышесказанное также в определенной степени верно для запросов GET.Основное отличие состоит в том, что с помощью запроса GET вы можете обойти это путем перенаправления HTTP от http://www.example.com/search/?q=banana до http://www.example.com/search/banana/, поэтому браузер сначала будет GET http://www.example.com/search/?q=banana, а затем GET http://www.example.com/search/banana/. Но согласно спецификации HTTP,вы не можете перенаправить запрос POST таким же образом.)

...