
Me gustaría eliminar la necesidad de incluir index.php en mis enlaces. En lugar de
example.com/about/index.php
me gustaria que fuera
example.com/about/
En segundo lugar, también me gustaría que se pudiera navegar por otras páginas que no son de índice sin la extensión de archivo .php en la URL. En lugar de
example.com/about/who_we_are.php
me gustaria que fuera
example.com/about/who_we_are
No tengo suerte para que ambos funcionen simultáneamente. Esto es lo que tengo en mi archivo .htaccess:
Options -Indexes
DirectoryIndex index.php index.htm index.html
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Actualmente, se está eliminando .php de las páginas que no son de índice, pero todas las páginas de índice del directorio se redirigen a la página de inicio.
¿Qué estoy haciendo mal?
Respuesta1
Poco después de publicar esta pregunta encontré una solución a este problema.
# remove .php; use THE_REQUEST to prevent infinite loops
RewriteCond %{HTTP_HOST} ^www\.example\.com
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]
# remove index
RewriteRule (.*)index$ $1 [R=301]
# remove slash if not directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]
# add .php to access file, but don't redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
Espero que esto ayude a cualquiera que busque una solución a este problema.