¿Cómo ocultar la URL de los usuarios al enviar este formulario?

Tengo un formulario con muchos campos …

Al enviar estos campos, uso el método POST que oculta las variables reales pasadas a la página PHP .

Sin embargo, no puedo deshacerme del enlace completo.

Cambiar de GET a POST hizo invisibles todos los campos de formulario en la URL , pero esta parte aún está visible:

mydomain.com/bin/query# 

Quiero que sea invisible, o decir:

  mydomain.com/search 

Tengo mod_rewrite habilitado, así que hay una posibilidad de hacer esto con mod_rewrite , creo, pero soy nuevo en mod_rewrite así que necesito tu ayuda …

¿Cómo debo ocultar esta URL?

Si necesitas más información, házmelo saber …

Al enviar un de usted, debe especificar un atributo de acción para el formulario. Supongo que su acción es mydomain.com/bin/query# pero quiere que sea mydomain.com/search . Luego debe usar mydomain.com/search el atributo de acción y la siguiente reescritura:

 RewriteEngine on RewriteRule ^/search$ /bin/query [QSA,NC] 

Eso mostraría mydomain.com/serach en la URL de los navegadores.

EDITAR : Usando el indicador QSA puede pasar los parámetros GET a su script de consulta. El NC hace que la reescritura case-insensitive.

Tu formulario debe verse así:

 
...

No debe ocultar la URL, es una pérdida de tiempo.

El navegador del usuario (que está bajo el control del usuario) envía datos a su servidor. Los usuarios siempre podrán enviar los datos que deseen al manejador de formularios (ya que no puede decirle al navegador dónde enviarlos sin poner esa información a disposición del usuario). El uso de mod_rewrite solo cambia la URL (por lo que no existe un beneficio de seguridad al ocultarla) y los motores de búsqueda no realizan solicitudes POST (por lo que no hay beneficio de SEO).

Si está buscando un beneficio cosmético, entonces realmente no me preocuparía. La cantidad de usuarios que notarían que la URL a la que se envió el formulario es muy pequeña, y el número de personas a las que les importa es aún más pequeño.

Supongamos que es nuevo en el mundo de la web, aquí hay 2 reglas para que aprenda:

  1. De acuerdo con el estándar HTTP, la búsqueda debe hacerse utilizando el método GET, no POST
  2. Ocultar la URL es una tontería. Aunque puedes usar mod_rewrite para embellecer la URL, no para “ocultarla”.
  3. Ocultar las variables de búsqueda es una tontería, sin excusas. la búsqueda debe hacerse utilizando el método GET, no POST

Prueba RewriteRule ^/search /bin/query luego puedes cambiar tu acción de formulario a / search

Lo que puede hacer es emitir un redireccionamiento luego del procesamiento de su formulario.

 // process form vars eg, save_values($_POST); // redirect header('Location: /some/other/page'); exit; 

Los usuarios del navegador solo verán la página que finalmente redirigirás. Todavía será posible inspeccionar las solicitudes / respuestas HTTP para determinar la ubicación del procesamiento del formulario si sabe lo que está haciendo.