es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

.htaccess, preservar datos de envío en reescritura de URL.

Hay publicaciones sobre problemas similares en todas partes, pero ninguna funcionó en mi caso.
Quiero preservar los datos POST cuando reescribo la URL.

En mi archivo .htaccess, tengo lo siguiente:

RewriteRule ^blogs/([a-z0-9]+)$ blog-details.php?blog=$1 [L]

Cuando se envía el formulario en esta página, obtengo un array vacío. ¿Cómo puedo preservar los datos POST con esta regla de reescritura de URL? Gracias de antemano por sus sugerencias.

[EDIT]
Podría deberse al hecho de que la extensión php se elimina de la URL. Tengo estas reglas al principio de mi archivo .htaccess después de RewriteEngine On.

RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule ^ /%1 [NC,L,R]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [NC,L]

El archivo .htaccess completo es el siguiente:

RewriteEngine on

RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule ^ /%1 [NC,L,R]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [NC,L]

RewriteRule ^blogs/([a-z0-9-]+)$ blog-details.php?blog=$1 [L]

Tengo el mismo problema cuando reescribo otras URL de este tipo. ¿Alguien puede sugerir una solución en este caso? Gracias de antemano por sus sugerencias y comentarios.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para preservar los datos POST al reescribir la URL, puedes agregar la bandera [QSA] a tu RewriteRule. Esta bandera agregará la cadena de consulta a la URL reescrita.

    Aquí hay un ejemplo de cómo puedes modificar tu RewriteRule para preservar los datos POST:

    RewriteRule ^blogs/([a-z0-9-]+)$ blog-details.php?blog=$1 [L,QSA]

    Con esta modificación, los datos POST deberían incluirse en la URL reescrita como parámetros de consulta.

    También es importante mencionar que el código .htaccess que proporcionaste incluye reglas para eliminar la extensión .php de las URLs. Esto puede estar causando problemas al preservar los datos POST, ya que la URL reescrita puede no coincidir con la URL esperada para el envío del formulario. Si estás experimentando problemas con los datos POST y la reescritura de URL, puede ser útil simplificar tus reglas de .htaccess para aislar el problema.

Comments are closed.