Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/06/2020, 05:10
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Evitar mostrar algunos archivos y a la vez ciertos parámetros en la url co

Hola de nuevo.

Finalmente gracias a la gran ayuda de Triby lo he arreglado así:

index.php

Código PHP:
Ver original
  1. /*=============================================
  2. CONTENIDO DINÁMICO
  3. =============================================*/
  4.  
  5. //ruta => [nombre-de-ruta-para-menú-o-título, archivo-a-incluir]
  6.  
  7. $rutas = [
  8.     'inicio' => ['Inicio', 'inicio.php'],
  9.     'contacto' => ['Contacto', 'contacto.php']
  10. ];
  11. // Obtener ruta desde $_GET o inicializar como cadena vacía:
  12. $ruta = (isset($_GET['ruta'])) ? $_GET['ruta'] : '';
  13.  
  14. // Forzar que 'inicio' no aparezca como parámetro en URL
  15. if($ruta == 'inicio') {
  16.     // Redirige a raíz del sitio
  17.     header('Location: https://midominio.com/');
  18. }
  19.  
  20. // Hay diagonales?
  21. $params = explode('/', $ruta);
  22. $abrir = ($params[0] == '') ? 'inicio' : $params[0];
  23. // Verificar que la ruta existe
  24. if(isset($rutas[$abrir])) {
  25.     // Si hay más de 1 parámetro, es porque hay diagonal al final
  26.     if(count($params) > 1) {
  27.         // Redirigir sin diagonal
  28.         header("Location: https://midominio.com/$abrir");
  29.     }
  30.     // Incluir archivo de ruta
  31.     include $rutas[$abrir][1];
  32.     // Finalizar script
  33.     exit;
  34. }
  35. // Aquí mostrar una página con error 404: No encontrada
  36. include 'error404.php';

htaccess

Código Apache:
Ver original
  1. # -- Impedir que se pueda ver el listado de contenidos de un directorio
  2. Options -Indexes
  3.  
  4. RewriteEngine On
  5. RewriteBase /
  6.  
  7. # -- Evitar mostrar en la url archivo.php?ruta=parametro
  8. RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^?]*)\?
  9. RewriteRule (.*) /$1? [R=301,L]
  10.  
  11. # -- Evitar que se abra index.php
  12. RewriteCond %{THE_REQUEST} ^.*/index\.php
  13. RewriteRule ^(.*)index.php$ https://midominio.com/ [R=301,L]
  14.  
  15. # -- Redirigir cualquier '/ruta.php' a '/ruta', quitando la extensión .php
  16. RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
  17. RewriteRule ^/?(.*)\.php$ https://midominio.com/$1 [L,R=301]
  18.  
  19. # -- Redirigir la URL a https
  20. RewriteCond %{SERVER_PORT} !=443
  21. RewriteRule ^(.*)$ https://midominio.com/$1 [R=301,L]
  22.  
  23. # -- Redirigir la URL con www a la dirección sin www
  24. RewriteCond %{HTTP_HOST} ^www.midominio.com
  25. RewriteRule ^(.*)$ https://midominio.com/$1 [R=301,L]
  26.  
  27. # --No existe archivo !-f, no existe directorio !-d
  28. RewriteCond %{REQUEST_FILENAME} !-f
  29. RewriteCond %{REQUEST_FILENAME} !-d
  30.  
  31. ErrorDocument 404 /error404.php
  32. ErrorDocument 403 /index.php
  33.  
  34. RewriteRule ^([-a-zA-Z0-9ñÑ_/.]+)$ index.php?ruta=$1

Lo dejo por aquí por si también le puede servir a alguien.

Saludos.

Última edición por kahlito; 26/06/2020 a las 09:23