Quiero redirigir todo:
example.com/{anything}para:
example.com/index.php?q={anything}Pero cuando intento:
example.com/aaa?param=xxxSolo obtuve 'aaa' en el parámetro 'q', y el '?param=xxx' se perdió. ¿por qué? y como mantenerlo?
mi regla actual es:
RewriteEngine on RewriteRule ^(.*)$ index.php?a=$1 [QSA,L]¿Probaste que en realidad no obtienes el parámetro? Para mí, el parámetro no está visible en la URL, pero sí pasó.
Simplemente usé esto:
RewriteEngine on RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)$ ip.php?q=$1 [QSA]Y probé esto encima de ip.php:
<?php if(isset($_GET['q'])) { echo "PASSED: ".$_GET['q']; } ?>En este caso, cuando visito
mypage.com/SOMETHINGparece que permanece allí, pero $_GET param 'q' está configurado en ALGO. Sin las reglas de reescritura anteriores, normalmente obtendrá 500 errores internos.
También verifique las reglas de mod_rewrite de su servidor, etc. para ciertos detalles.