rewriterule - ¿Por qué $_POST está vacío cuando se usa[QSA] en.htaccess?
rewriteengine on (3)
¿Qué hay de modificar su regla de esta manera? ¿Cambia algo?
RewriteRule ^(.*)/.htm$ index.php?url=$0.htm [QSA,L]
Tengo lo siguiente en .htaccess:
RewriteCond %{REQUEST_URI} !app/index/.php$
RewriteRule ^(.*/.htm)$ index.php?url=$0 [QSA,L]
Todo funciona bien, pero las URL de resultados tienen $ _POST vacío.
Estoy 100% seguro de que es un error de mod_rewrite, no HTML o PHP, porque cuando cambio [QSA, L] a [L] funciona muy bien. Pero realmente necesito QSA.
Ocurre con aproximadamente un 30% de hospedajes, por lo que puede tratarse de alguna opción de configuración de Apache.
Tenía exactamente este problema. Funciona en un servidor y luego no en el siguiente. ¡Molesto y lento para decir lo menos!
Después de mucho verificar usando este php:
foreach ($_REQUEST AS $key => $value) echo $value."<br>";
en la parte superior de index.php para verificar qué valores se enviaron desde el archivo htaccess (¡y muchos otros controles en los que no entraré!) finalmente encontré que necesitas especificar "RewriteBase"
Agregar RewriteBase /
al principio del archivo htaccess lo hizo funcionar en todos los servidores que probé.
(también, recuerde establecer en: RewriteBase /folder-where-file-is/
where "folder-where-file-is" es la ubicación del archivo index.php si está en una subcarpeta)
Espero que te ayude, ¡sabiendo que esto me habría ayudado muchas horas atrás!
de forma predeterminada, .. tal vez apache no habilite mod_rewrite, intente escribir esto en su consola
sudo a2enmod rewrite
muestra mi .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>