Estaba intentando eliminar las extensiones PHP de mi sitio web. Cuando el usuario solicita un archivo PHP, se eliminará el PHP y se redirigirá al usuario, y cuando el usuario escriba una URL sin PHP, se servirá el archivo PHP en sí. Esto funcionó bien, excepto cuando hay un parámetro GET en la URL. Mis reglas son las siguientes:¿Cómo usar Apache Mod_rewrite para eliminar la extensión de php, conservando los parámetros de GET?
# remove .php ONLY if requested directly
RewriteCond %{THE_REQUEST} (\.php\sHTTP/1)
RewriteRule ^(.+)\.php$ /$1 [R=301,L,QSA]
# remove trailing slash ONLY if it is not an existing folder
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# rewrite to FILENAME.php if such file does exist and is not a folder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /$1.php [L,QSA]
pensé que esto ya debería ser capaz de eliminar php incluso cuando no hay ningún parámetro GET, pero fracasó. También probé algo como esto:
RewriteCond %{THE_REQUEST} (\.php\sHTTP/1)
RewriteRule ^(.)\.php(.)$ $1$2 [R=301,L,QSA]
También no funcionaba, el php es todavía allí. Pero si trato:
RewriteRule ^(.)\.php(.)$ $1$2 [R=301,L,QSA]
es decir, la eliminación de la RewriteCond, la extensión php se retira y se conservaron los parámetros, pero la página no se servirá como el navegador dice que había demasiados redireccionamientos.
¿Alguien alguna idea por favor?
en RewriteRule (o es sólo un novato como yo lol?):/$ 1 Generar URL roto, utilice $ 1 con salida / – StefanoCudini