entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

ocultar index.php de la url

Tengo un index.php que muestra todo lo que haya en un directorio, funciona bien, el único problema es que la url cuando entro en alguna subcarpeta de ese directorio me aparece así: dominio.es/Prueba/index.php?b=Prueba Me gustaría que se viese dominio.es/Prueba/Prueba pero no sé cómo. He probado algunas soluciones, pero todas me saltaban con error 500.
Probé esto, que salía en varias páginas, pero tampoco me sirvió.

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php/$0 [PT,L]

El código es bastante extenso, no sé si cabe la necesidad de subirlo.

1 Respuesta

0voto

Peter Puntos147740

Asumiendo que tienes activo mod_rewrite y PHP superior a 5.2.6, prueba con lo siguiente.

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

Saludos.

0voto

Lilii comentado

Sí, tengo el mod_rewrite activo y PHP versión 7
He puesto el código que me pusiste, y sigue sin ir. Ya no salta el error 500, pero la url sigue igual

0voto

Peter comentado

Prueba con el código actualizado que puse.

0voto

Lilii comentado

Este es el htaccess que tengo ahora, no sé si lo hice bien.

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/ [L]
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
IndexIgnore ..

Me sigue saliendo la url igual que antes

0voto

Peter comentado

Con RewriteEngine On y tal cual te lo puse, sin todo lo demás.

1voto

Lilii comentado

Bien, ahora no sale el index.php, pero en la url sigue apareciendo así: dominio.es/Prueba/?b=Prueba

0voto

Peter comentado

Solo modifica la regla para que incluya ?b=Prueba después de index.php.

El caracter ? es especial y debe escaparse con \.

0voto

Lilii comentado

Perdona, no entiendo muy bien cómo hacerlo, ¿qué regla tengo que modificar? ¿Tengo que copiar y pegar las dos, o solo añadir eso a una línea?

1voto

Peter comentado

La regla que te puse arriba y que funciona.

RewriteEngine On
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

Esa regla quita index.php de la URL y tu quieres que quite index.php?b=Prueba.

Solo modifica para que quite lo que necesitas.

1voto

Lilii comentado

Perfecto, me funcionó! Muchas gracias!

0voto

Peter comentado

De nada, que bueno que quedó como necesitas :)

0voto

Lilii comentado

Perdón por reabrir algo que ya tenía solución, pero antes me estaba funcionando bien y ahora no. Creo que no toqué nada indebido, pero me vuelve a salir todo otra vez dominio.es/Prueba/index.php?b=Prueba
Tengo el htaccess así, que antes me funcionaba bien, pero ahora ya no

RewriteEngine On
RewriteCond %{THE_REQUEST} ^GET.*index\.php\?b=[NC]
RewriteRule (.*?)index\.php\?b=/*(.*) /$1$2 [R=301,NE,L]
IndexIgnore ..

0voto

Peter comentado

Creo que no toqué nada indebido

Lo hiciste. :)

Te contestaría lo mismo de arriba, es cosa de que lo vuelvas a hacer con calma para que entiendas como funciona. Tal cual el ejemplo y agregando lo que necesitas.

Y cuando hagas cambios, siempre haz un backup antes. :)

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta