У меня есть форма с множеством полей …
При отправке этих полей я использую метод POST, который скрывает фактические переменные, переданные на страницу PHP .
Однако я не могу избавиться от полной ссылки.
Переход с GET на POST сделал все поля формы невидимыми в URL-адресе , но эта часть все еще видна:
mydomain.com/bin/query#
Я хочу, чтобы это было невидимым, или сказать:
mydomain.com/search
У меня mod_rewrite
включен, поэтому есть возможность сделать это с помощью mod_rewrite
я думаю, но я новичок в mod_rewrite
поэтому мне нужна ваша помощь …
Как мне скрыть этот URL?
Если вам нужно больше ввода, дайте мне знать …
При отправке от вас необходимо указать атрибут действия для формы. Я предполагаю, что ваше действие – mydomain.com/bin/query#
но вы хотите, чтобы это было mydomain.com/search
. Затем вы должны использовать mydomain.com/search
с действием attitute и следующим переписыванием:
RewriteEngine on RewriteRule ^/search$ /bin/query [QSA,NC]
Это покажет mydomain.com/serach
в URL-адресах браузеров.
EDIT : Используя флаг QSA, вы можете передать пареметры GET в свой скрипт запроса. NC делает переписку без учета регистра.
Ваша форма должна выглядеть так:
<form action="/search" method="post"> ... </form>
Вы не должны скрывать URL-адрес, это пустая трата времени.
Браузер пользователя (который находится под контролем пользователя) отправляет данные на ваш сервер. Пользователи всегда смогут отправлять любые данные, которые им нравятся обработчику формы (поскольку вы не можете указать браузеру, куда его отправлять, не делая эту информацию доступной пользователю). Использование mod_rewrite просто изменяет URL-адрес (так что нет никакой выгоды от его скрытия), а поисковые системы не обрабатывают запросы POST (поэтому нет выгоды от SEO).
Если вы ищете косметическую выгоду, то я действительно не беспокоюсь об этом. Количество пользователей, которые заметили бы URL-адрес представленной формы, является крошечным, а число тех, кого это касается, еще меньше.
Предположим, что вы новичок в мире Интернета, вот вам 2 правила:
Попробуйте RewriteRule ^/search /bin/query
тогда вы можете изменить действие формы в / search
То, что вы можете сделать, – это перенаправление после обработки вашей формы.
// process form vars eg, save_values($_POST); // redirect header('Location: /some/other/page'); exit;
Пользователи браузера будут видеть только страницу, которую вы в конечном итоге перенаправляете. По-прежнему можно будет проверять HTTP-запросы / ответы, чтобы определить местоположение обработки формы, если вы знаете, что делаете.