Esta solución de Gumbo funciona muy bien para archivos, sin embargo, no funciona con directorios. En otras palabras:
Para mysite.com/file1.php
, muestra mysite.com/file1/
, que es excelente. Sin embargo, no funciona bien para directorios. Si intento acceder a la siguiente directorio (que contiene el archivo index.php dentro) mysite.com/dir1
, en lugar de mostrar el contenido de la http:/mysite.com/dir1/index.php
y la url: mysite.com/dir1/
, devuelve 404.
Mi solución era alrededor de ella:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ $1.php [L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .*[^/]$ $0/ [L,R=301]
En otras palabras, no hacer nada si es un directorio.
Espero que ayude.
Otro problema con la solución original es que css y las imágenes no se cargan hasta que cambie la ruta al archivo css y las imágenes a la ruta absoluta.
¿Hay alguna otra manera de resolverlo, en lugar de cambiar todas las rutas en todos los archivos en el sitio web a absoluto.
Muchas gracias.
Usted en realidad no han mencionado los enfoques que ha intentado - ¿Cuáles son sus conjunto actual de reglas de reescritura (suponiendo estás usando mod_rewrite)? Si no estás usando mod_rewrite, ¿qué estás usando? –
RewriteRase ^() $ index.php [NC, L] Rewritecond% {REQUEST_URI}! (^ /?. * \ .. * $) [NC] RewriteRule^(. *) $ $ 1.php [NC] Actualmente funciona bien para eliminar la extensión .php de los archivos, independientemente de la profundidad de la carpeta. Sin embargo, agregar a/resulta en un error 404, y todos los intentos de integrar una solución de barra forzada han causado problemas. –
Acepte una respuesta, esta pregunta también está vinculada a otras preguntas. –