Buenos días.
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;
if(isset($_GET["ruta"])){
$rutas = explode("/", $_GET["ruta"]);
/*=============================================
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: 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)
¿Aquí debo de evitarlo también con una redirección 301?
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: Esta página no funcionaLa página midominio.com te ha redirigido demasiadas veces.
Borrar las cookies.
ERR_TOO_MANY_REDIRECTS
4- Si el usuario escribe
https://midominio.com/contacto?ruta=contacto o
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.