17 de octubre de 2025

Cuando trabajamos con un servidor web como Apache, es muy común que al abrir la URL de una carpeta que no contiene un archivo index.php o index.html, este nos muestre un listado genérico de directorios y archivos llamado Apache list files.

Este listado cumple su función básica, pero luce muy simple y anticuado. Si queremos algo más profesional, más amigable para el usuario, podemos mejorar la experiencia utilizando una poderosa directiva de Apache llamada FallbackResource.


¿Qué es FallbackResource?

FallbackResource es una directiva de Apache que permite redirigir todas las solicitudes que no coincidan con un archivo o carpeta existente hacia un archivo PHP que definamos.

Esto significa que, si alguien accede a una carpeta sin index.php o index.html, en lugar de mostrar el listado genérico de Apache, la petición será manejada por un archivo central (por ejemplo globalindex.php) que nosotros controlamos, permitiéndonos dar un diseño mucho más atractivo.


Configuración en el sitio principal

Si tienes control total sobre tu servidor Apache, puedes activar esta funcionalidad de la siguiente forma:

Edita la configuración principal del VirtualHost por defecto:

sudo nano /etc/apache2/sites-available/000-default.conf

Dentro de la sección <Directory /var/www/html> agrega lo siguiente:

<Directory /var/www/html>
    Options -Indexes
    DirectoryIndex index.php index.html
    FallbackResource /globalindex.php
</Directory>

Con esto desactivamos el listado de Apache (-Indexes) y en su lugar redirigimos todas las carpetas sin index hacia globalindex.php.

Aplica los cambios:

sudo systemctl reload apache2

¡Y listo! Ahora cualquier carpeta sin index.php usará automáticamente tu globalindex.php.


Configuración en subdominios

Lo interesante de este método es que también se puede aplicar en subdominios, cada uno con sus propias carpetas, pero compartiendo el mismo globalindex.php.

Paso 1: Crear la carpeta del subdominio (en este ejemplo crearemos el sub-dominio HUB pero tu puedes crear otro)

cd /var/www/html
sudo mkdir hub
sudo chown -R www-data:www-data /var/www/html/hub/
sudo chmod -R 755 /var/www/html/hub/

Paso 2: Crear el archivo de configuración del subdominio

sudo nano /etc/apache2/sites-available/hub.miweb.net.conf

Y agrega lo siguiente:

<VirtualHost *:80>
    ServerName hub.miweb.net
    DocumentRoot /var/www/html/hub

    <Directory /var/www/html/hub>
        Options -Indexes
        DirectoryIndex index.php index.html
        FallbackResource /globalindex.php
    </Directory>

    # Alias para que /globalindex.php apunte al archivo fuera de la carpeta hub
    Alias /globalindex.php /var/www/html/globalindex.php

    <Files "/var/www/html/globalindex.php">
        Require all granted
    </Files>

    ErrorLog ${APACHE_LOG_DIR}/hub-error.log
    CustomLog ${APACHE_LOG_DIR}/hub-access.log combined
</VirtualHost>

Paso 3: Activar el subdominio

sudo a2ensite hub.miweb.net
sudo systemctl reload apache2

Con esto, el subdominio hub.miweb.net ya está activo en el server, y si no encuentra un index.php, mostrará el contenido de globalindex.php.

Solo te falta configurar tu subdominio en el administrador de dominios agregar un record (A)
A / hub / IP-de-tu-web-server

y con eso ya deberia funcionar tu subdominio correctamente


Si no tienes acceso al Apache la alternativa seria usar .htaccess

Si no tienes acceso a la configuración de tu web server y solo tienes un hosting, tienes una opcion mas para poder usar nuestro visor de archivos con contraseña. En tu hosting en donde deseas que se cargue el visor que archivos y carpetas, tendras que crearle una carpeta especial para este para el ejemplo le llamaremos carpeta /fallback/

Y crearemos el archivo .htaccess el cual pondremos el siguiente contenido: (en el codigo recuerda cambiar la RewriteBase /fallback/ y RewriteCond %{REQUEST_URI} !^/fallback/globalindex\.php$ donde dice /fallback/ y poner el nombre de tu carpeta donde tendras instalado este sistema.

Options -Indexes
DirectoryIndex globalindex.php
RewriteEngine On
RewriteBase /fallback/
# No redirigir el propio globalindex.php
RewriteCond %{REQUEST_URI} !^/fallback/globalindex\.php$
# Redirigir si NO existe archivo
RewriteCond %{REQUEST_FILENAME} !-f
# Redirigir siempre, incluso si es un directorio vacío
RewriteRule ^(.*)$ globalindex.php?url=$1 [QSA,L]

y ahora solo agregas el archivo globalindex.php en esa carpeta y ya deberia funcionar sin problema, te recuerdo todo lo grabes en esta carpeta ya sea archivos de texto imagenes y carpetas sera visualizados por globalindex.php son colo abrir su tuhosting/ruta/ si quieres cambiar algunas caracteristicas puedes editar la zona de configuracion de globalindex.php asi podras asignarle una contraseña propia o dejarla libre sin contraseña.

Nuestro globalindex.php personalizado

La clave de esta configuración está en el archivo globalindex.php, que puede mostrar los archivos y carpetas de manera estilizada: con tablas redondeadas, colores modernos e incluso protección por contraseña para mayor seguridad.

Puedes descargar nuestro GLOBALINDEX aqui:

https://github.com/zidrave/filemanager_1filephp/blob/main/core/globalindex.php

Características Actuales:

  • Contraseña simple y avanzada ( opcional )
  • Portada personalizable con readme.md al estilo github.
  • Visor de Archivos de Texto y archivos de imagen en tiempo real.
  • Themes seleccionables (Varios).
  • Puedes tener la pagina principal y carpetas sin clave pero con un plugin simple puedes poner contraseña a algunas carpetas individuales, facilmente creas una carpeta y agregas un archivo llamado «gi-security.php», con el siguiente contenido:
<?php
//PLUGIN DE SEGURIDAD EXTRA PARA DIFERENTE CARPETA //////
// archivo gi-security.php , donde pongas esto si pedira clave! 
//y puede ser una clave diferente por carpeta pero con que 
//logees alguna de las carpetas ya entrara a las demas 
//carpetas con contraseña asi que precaucion.

// 1 = pedirá contraseña, 0 = acceso libre
$versinclave = 1;  
// 0 = clave simple, 1 = clave avanzada con hash (En esta opcion tienes q crear tu hash ejem: $2y$12$RcgZxApBg/cXAcpXcaZ0QuUf3hBjmcl4bZ....)
$passwordadvance = 1;  
// Modo básico (clave visible)
$password = "1111";
// Modo avanzado (clave hasheada con bcrypt)
$password_hashed = '$2y$12$RcgZxApBg/cXAcpXcaZ0QuUf3hBjmcl4bZbonIQvWLyK4.0E0hjrO';
/////////////////////////////////////////////////////////
?>

y con ese simple cambio aunque tu globalindex.php lo tengas configurado para que no pida password en las carpetas que pongas este archivo si pedira password.

Este archivo lo puedes mejorar con el tiempo, agregando:

  • Contador de elementos encontrados.
  • Buscador dentro de la carpeta. (Aun nos falta esto)
  • Íconos para archivos y carpetas.
  • Responsive design (adaptado a móviles).
  • Contraseña para acceder a las carpetas.
  • MODO solo con password y modo publico (no pedira password, se configura en el mismo archivo)
  • Se agregaron mas themes.

Muchas de esas características ya le agrege al globalindex que esta publicado en mi Github, tambien tiene themes y contraseña.

Con esta herramienta no solo mejoras la estética, sino también la seguridad y la experiencia de usuario al navegar por las carpetas de tu servidor o Web para compartir archivos.


✅ Ahora tu servidor Apache y tus subdominios tendrán un listado de carpetas moderno, seguro y personalizable, todo gestionado desde un solo archivo globalindex.php.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *