Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Перезапись URL и формы GET в Apache/PHP

Автор вопроса: Enrico DetomaОтветов: 2

Я включил перезапись URL на своем PHP-сайте с помощью Apache (http://example.com/index.php?param=12 становится http://example.com/index/param/12 а>).

У меня есть несколько форм, которые находятся в GET вместо POST.

После заполнения формы результирующий URL-адрес не перезаписывается.

Можно ли сохранить переписанные URL-адреса после отправки формы GET?

ОБНОВЛЕНИЕ: я нашел эту статью по теме http://matthewjamestaylor.com/blog/how-to-post-forms-to-clean-rewriting-urls, но мне действительно не нравится идея перенаправления на переписанный URL. Действительно ли нет способа сохранить переписанные URL-адреса без перенаправления?

ОБНОВЛЕНИЕ 2: Вот пример того, что я пытаюсь сделать. Скажем, у меня есть простая форма:

<form method="get" action="">
   <fieldset>
      <input type="text" name="q" />
      <input type="submit" value="Search" />
   </fieldset>
</form>

и предположим, что мой URL-адрес http://example.com/index/param/12

После отправки формы GET URL становится http://example.com/index/param/12?q=my-input-text, а я хотел бы получить переписанный URL, например http://example.com/index/param/12/q/мой-входной-текст

  • Простой PoC сделает вашу точку зрения более очевидной. Flavius 27.11.2009

url-rewritingphpwebformsapache2

Ответы

Ответ 1 · рейтинг 4 · philfreo

Похоже, если вы хотите, чтобы ваша форма переходила непосредственно к /q/my-input-text, вы должны использовать JavaScript, чтобы это произошло в форме onSubmit.

Ответ 2 · user187291

apache mod_rewrite обрабатывает только входящие URL-адреса (запросы) - он не контролирует URL-адреса, которые вы создаете в своих php-скриптах. Это то, о чем вы должны позаботиться сами.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы