URL переписать в PHP - PullRequest
       2

URL переписать в PHP

1 голос
/ 11 мая 2011
RewriteRule ^(.*)_([^]+).htm/([0-9.]+)$ a.php?f=$1&t=$2&amt_from=$3 [NC]

У меня есть вызов формы a.php с 3 параметрами.Я могу использовать вышеупомянутое правило перезаписи, и a_b.htm / c работает.

Моя проблема в том, что когда пользователь нажимает кнопку отправки в форме, он все равно видит a.php?f=$1&t=$2&amt_from=$3

Как мне это исправить?

Большое спасибо.

Ответы [ 2 ]

1 голос
/ 11 мая 2011

Вам нужна ваша форма для создания правильного URL. Это возможно только с некоторым Javascript, но в основном работает так:

<form action="a.php" method="GET" onsubmit="rewrite_form(event);">
   <input name=f value=123>
   <input name=t value=ABCABC>
   <input name=amt_from value=XYZXYZXYZ>
   <input type=submit>

<script type="text/javascript">
   function rewrite_form(e) {    
      var form = document.forms[0];   // .getElementById("form1");
      window.location = '' + form.f.value + '_' + form.t.value + '.htm/' + form.amt_from.value;            
      if (e && e.preventDefault) { e.preventDefault(); }
      return false;
   }
</script>

Таким образом, в основном форма отправки генерирует лучший URL, который вы хотите. Если браузер не поддерживает Javascript, он вернется к более сложному параметризованному URL GET.

Обновление Le : Доступ к элементу формы был неправильным, обычно вам нужно document.forms[0].fieldname.value. И я перенес конструкцию URL в отдельную функцию. Метод onsubmit= достаточно хорошо работает с event.preventDefault(); в Opera / Chrome / Firefox.

0 голосов
/ 11 мая 2011

Это потому, что вы все еще отправляете с method="get", поэтому форма создает эту форму URL.

Вместо этого используйте post, если вы не хотите, чтобы пользователь видел отправленные значения в URL

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