Hola de nuevo.
Finalmente gracias a la gran ayuda de
Triby lo he arreglado así:
index.php
Código PHP:
Ver original/*=============================================
CONTENIDO DINÁMICO
=============================================*/
//ruta => [nombre-de-ruta-para-menú-o-título, archivo-a-incluir]
$rutas = [
'inicio' => ['Inicio', 'inicio.php'],
'contacto' => ['Contacto', 'contacto.php']
];
// Obtener ruta desde $_GET o inicializar como cadena vacía:
$ruta = (isset($_GET['ruta'])) ?
$_GET['ruta'] : '';
// Forzar que 'inicio' no aparezca como parámetro en URL
if($ruta == 'inicio') {
// Redirige a raíz del sitio
header('Location: https://midominio.com/'); }
// Hay diagonales?
$abrir = ($params[0] == '') ? 'inicio' : $params[0];
// Verificar que la ruta existe
if(isset($rutas[$abrir])) { // Si hay más de 1 parámetro, es porque hay diagonal al final
// Redirigir sin diagonal
header("Location: https://midominio.com/$abrir"); }
// Incluir archivo de ruta
include $rutas[$abrir][1];
// Finalizar script
}
// Aquí mostrar una página con error 404: No encontrada
include 'error404.php';
htaccess
Código Apache:
Ver original# -- Impedir que se pueda ver el listado de contenidos de un directorio
Options -Indexes
RewriteEngine On
RewriteBase /
# -- Evitar mostrar en la url archivo.php?ruta=parametro
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^?]*)\?
RewriteRule (.*) /$1? [R=301,L]
# -- Evitar que se abra index.php
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ https://midominio.com/ [R=301,L]
# -- Redirigir cualquier '/ruta.php' a '/ruta', quitando la extensión .php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ https://midominio.com/$1 [L,R=301]
# -- Redirigir la URL a https
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]
# --No existe archivo !-f, no existe directorio !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
ErrorDocument 404 /error404.php
ErrorDocument 403 /index.php
RewriteRule ^([-a-zA-Z0-9ñÑ_/.]+)$ index.php?ruta=$1
Lo dejo por aquí por si también le puede servir a alguien.
Saludos.