Estoy intentando arreglar o cambiar algunas rutas que aparecen en la url preparadas con .htaccess que o no deberían salir completas o incluso evitar que si el usuario pone algunas de estas se muestre cierto contenido.
Lo estoy haciendo de la siguiente manera:
Index.php
Código PHP:
Ver original
<?php /*============================================= CONTENIDO DINÁMICO =============================================*/ $ruta = null; /*============================================= LISTA BLANCA DE URL'S AMIGABLES =============================================*/ if($rutas[0] == "inicio" || $rutas[0] == "contacto"){ include $rutas[0].".php"; }else{ } }else{ include "inicio.php"; } ?>
htaccess
Código Apache:
Ver original
# Impedir que se pueda ver el listado de contenidos de un directorio Options All -Indexes RewriteEngine On RewriteBase / RewriteRule ^([-a-zA-Z0-9ñÑ_/]+)$ index.php?ruta=$1 RewriteCond %{SERVER_PORT} !=443 RewriteRule ^(.*)$ https://midominio.com/$1 [R=301,L] # Redirigir la URL con www a la dirección sin www RewriteCond %{HTTP_HOST} ^www.midominio.com RewriteRule ^(.*)$ https://midominio.com/$1 [R=301,L]
Hasta aquí lo que logro es que cuando el usuario ponga en la url o el dominio completo o una de las dos palabras de la lista blanca como "inicio" o "contacto" cargue correctamente el contenido, por ejemplo así:
https://midominio.com/
https://midominio.com/inicio
https://midominio.com/contacto
Y si por ejemplo una persona escribe otra palabra que no sea una de las de la lista blanca redirige a inicio, ejemplo:
https://midominio.com/algo -> https://midominio.com/
Hasta aquí todo bien, sin embargo veo varios errores que no deberían ocurrir o al menos no se como evitar por ahora, por ejemplo:
1- Si el usuario añade una barra final "/" y escribe https://midominio.com/inicio/ el dominio carga sin su hoja de estilos, por lo tanto aquí ¿debo de aplicar una redirección a la ruta sin "/"?
2- Si el usuario escribe o añade un carácter no permitido como "." por ejemplo https://midominio.com/inicio. me muestra un directorio de opciones y documentos disponibles
Cita:
¿Aquí debo de evitarlo también con una redirección 301?Multiple Choices. The document name you requested (/inicio.) could not be found on this server. However, we found documents with names similar to the one you requested.
Available documents: /inicio.php (common basename)
Available documents: /inicio.php (common basename)
3- Si el usuario intenta ver un directorio, por ejemplo el de imágenes https://midominio.com/imagenes en vez de evitarlo y redirigir a inicio me da un error de redirección
Cita:
4- Si el usuario escribe https://midominio.com/contacto?ruta=contacto o Esta página no funcionaLa página midominio.com te ha redirigido demasiadas veces.
Borrar las cookies.
ERR_TOO_MANY_REDIRECTS
Borrar las cookies.
ERR_TOO_MANY_REDIRECTS
https://midominio.com/index.php?ruta=inicio/ me cargan correctamente sin embargo me gustaría que en la url solo se pueda ver como mucho https://midominio.com/inicio o https://midominio.com/contacto
5- Si el usuario escribe https://midominio.com/index.php carga perfectamente sin embargo me gustaría ver como hacer que no aparezca la extensión "php" y tampoco la palabra index. Aquí he probado varias opciones con RewriteCond y RewriteRule pero tampoco me funcionan.
En general ¿qué podría añadir o eliminar de lo actual?
Saludos.