{"id":4641,"date":"2025-10-01T01:43:40","date_gmt":"2025-10-01T06:43:40","guid":{"rendered":"https:\/\/zidrave.net\/?p=4641"},"modified":"2025-10-04T17:51:42","modified_gmt":"2025-10-04T22:51:42","slug":"mejorando-la-visualizacion-de-las-carpetas-de-tu-web-apache-server","status":"publish","type":"post","link":"https:\/\/zidrave.net\/index.php\/2025\/10\/01\/mejorando-la-visualizacion-de-las-carpetas-de-tu-web-apache-server\/","title":{"rendered":"Mejorando la visualizaci\u00f3n de las carpetas de tu Web Apache Server"},"content":{"rendered":"\n<p>Cuando trabajamos con un servidor web como <strong>Apache<\/strong>, es muy com\u00fan que al abrir la URL de una carpeta que no contiene un archivo <code>index.php<\/code> o <code>index.html<\/code>, este nos muestre un listado gen\u00e9rico de directorios y archivos llamado <em>Apache list files<\/em>.<\/p>\n\n\n\n<p>Este listado cumple su funci\u00f3n b\u00e1sica, pero luce <strong>muy simple y anticuado<\/strong>. Si queremos algo m\u00e1s profesional, m\u00e1s amigable para el usuario, podemos mejorar la experiencia utilizando una poderosa directiva de Apache llamada <strong>FallbackResource<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"617\" height=\"392\" src=\"https:\/\/zidrave.net\/wp-content\/uploads\/2025\/10\/image-3.png\" alt=\"\" class=\"wp-image-4658\" style=\"width:675px;height:auto\" srcset=\"https:\/\/zidrave.net\/wp-content\/uploads\/2025\/10\/image-3.png 617w, https:\/\/zidrave.net\/wp-content\/uploads\/2025\/10\/image-3-300x191.png 300w\" sizes=\"auto, (max-width: 617px) 100vw, 617px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"875\" height=\"800\" src=\"https:\/\/zidrave.net\/wp-content\/uploads\/2025\/10\/image.png\" alt=\"\" class=\"wp-image-4642\" srcset=\"https:\/\/zidrave.net\/wp-content\/uploads\/2025\/10\/image.png 875w, https:\/\/zidrave.net\/wp-content\/uploads\/2025\/10\/image-300x274.png 300w, https:\/\/zidrave.net\/wp-content\/uploads\/2025\/10\/image-768x702.png 768w\" sizes=\"auto, (max-width: 875px) 100vw, 875px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 es FallbackResource?<\/h2>\n\n\n\n<p><code>FallbackResource<\/code> 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.<\/p>\n\n\n\n<p>Esto significa que, si alguien accede a una carpeta sin <code>index.php<\/code> o <code>index.html<\/code>, en lugar de mostrar el listado gen\u00e9rico de Apache, la petici\u00f3n ser\u00e1 manejada por un <strong>archivo central<\/strong> (por ejemplo <code>globalindex.php<\/code>) que nosotros controlamos, permiti\u00e9ndonos dar un dise\u00f1o mucho m\u00e1s atractivo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Configuraci\u00f3n en el sitio principal<\/h2>\n\n\n\n<p>Si tienes control total sobre tu servidor Apache, puedes activar esta funcionalidad de la siguiente forma:<\/p>\n\n\n\n<p>Edita la configuraci\u00f3n principal del VirtualHost por defecto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/apache2\/sites-available\/000-default.conf<\/code><\/pre>\n\n\n\n<p>Dentro de la secci\u00f3n <code>&lt;Directory \/var\/www\/html&gt;<\/code> agrega lo siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Directory \/var\/www\/html&gt;\n    Options -Indexes\n    DirectoryIndex index.php index.html\n    FallbackResource \/globalindex.php\n&lt;\/Directory&gt;<\/code><\/pre>\n\n\n\n<p>Con esto desactivamos el listado de Apache (<code>-Indexes<\/code>) y en su lugar redirigimos todas las carpetas sin <code>index<\/code> hacia <code>globalindex.php<\/code>.<\/p>\n\n\n\n<p>Aplica los cambios:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl reload apache2<\/code><\/pre>\n\n\n\n<p>\u00a1Y listo! Ahora cualquier carpeta sin <code>index.php<\/code> usar\u00e1 autom\u00e1ticamente tu <code>globalindex.php<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Configuraci\u00f3n en subdominios<\/h2>\n\n\n\n<p>Lo interesante de este m\u00e9todo es que tambi\u00e9n se puede aplicar en <strong>subdominios<\/strong>, cada uno con sus propias carpetas, pero compartiendo el mismo <code>globalindex.php<\/code>.<\/p>\n\n\n\n<p>Paso 1: Crear la carpeta del subdominio (en este ejemplo crearemos el sub-dominio HUB  pero tu puedes crear otro)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/var\/www\/html\nsudo mkdir hub\nsudo chown -R www-data:www-data \/var\/www\/html\/hub\/\nsudo chmod -R 755 \/var\/www\/html\/hub\/<\/code><\/pre>\n\n\n\n<p>Paso 2: Crear el archivo de configuraci\u00f3n del subdominio<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/apache2\/sites-available\/hub.miweb.net.conf<\/code><\/pre>\n\n\n\n<p>Y agrega lo siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;\n    ServerName hub.miweb.net\n    DocumentRoot \/var\/www\/html\/hub\n\n    &lt;Directory \/var\/www\/html\/hub&gt;\n        Options -Indexes\n        DirectoryIndex index.php index.html\n        FallbackResource \/globalindex.php\n    &lt;\/Directory&gt;\n\n    # Alias para que \/globalindex.php apunte al archivo fuera de la carpeta hub\n    Alias \/globalindex.php \/var\/www\/html\/globalindex.php\n\n    &lt;Files \"\/var\/www\/html\/globalindex.php\"&gt;\n        Require all granted\n    &lt;\/Files&gt;\n\n    ErrorLog ${APACHE_LOG_DIR}\/hub-error.log\n    CustomLog ${APACHE_LOG_DIR}\/hub-access.log combined\n&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<p>Paso 3: Activar el subdominio<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo a2ensite hub.miweb.net\nsudo systemctl reload apache2\n<\/code><\/pre>\n\n\n\n<p>Con esto, el subdominio <strong>hub.miweb.net<\/strong> ya est\u00e1 activo en el server, y si no encuentra un <code>index.php<\/code>, mostrar\u00e1 el contenido de <code>globalindex.php<\/code>.<br><br>Solo te falta configurar tu subdominio en el administrador de dominios agregar un record (A)<br>A \/ hub \/ IP-de-tu-web-server<br><br>y con eso ya deberia funcionar tu subdominio correctamente<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Si no tienes acceso al Apache la alternativa seria usar .htaccess<\/h2>\n\n\n\n<p>Si no tienes acceso a la configuraci\u00f3n de tu web server y solo tienes un hosting, tienes una opcion mas para poder usar nuestro visor de archivos con contrase\u00f1a. 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\/<\/p>\n\n\n\n<p>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.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Options -Indexes\nDirectoryIndex globalindex.php\nRewriteEngine On\nRewriteBase \/fallback\/\n# No redirigir el propio globalindex.php\nRewriteCond %{REQUEST_URI} !^\/fallback\/globalindex\\.php$\n# Redirigir si NO existe archivo\nRewriteCond %{REQUEST_FILENAME} !-f\n# Redirigir siempre, incluso si es un directorio vac\u00edo\nRewriteRule ^(.*)$ globalindex.php?url=$1 &#91;QSA,L]<\/code><\/pre>\n\n\n\n<p>y ahora solo agregas el archivo <strong>globalindex.php<\/strong> 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\u00f1a propia o dejarla libre sin contrase\u00f1a.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Nuestro <code>globalindex.php<\/code> personalizado<\/h1>\n\n\n\n<p>La clave de esta configuraci\u00f3n est\u00e1 en el archivo <code>globalindex.php<\/code>, que puede mostrar los archivos y carpetas de manera estilizada: con tablas redondeadas, colores modernos e incluso protecci\u00f3n por <strong>contrase\u00f1a<\/strong> para mayor seguridad.<\/p>\n\n\n\n<p>Puedes descargar nuestro GLOBALINDEX aqui:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/zidrave\/filemanager_1filephp\/blob\/main\/core\/globalindex.php\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>https:\/\/github.com\/zidrave\/filemanager_1filephp\/blob\/main\/core\/globalindex.php<\/strong><\/a><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Caracter\u00edsticas Actuales:<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Contrase\u00f1a simple y avanzada ( opcional )<\/li>\n\n\n\n<li>Portada personalizable con<strong> readme.md<\/strong> al estilo github.<\/li>\n\n\n\n<li>Visor de Archivos de Texto y archivos de imagen en tiempo real.<\/li>\n\n\n\n<li>Themes seleccionables  (Varios).<\/li>\n\n\n\n<li>Puedes tener la pagina principal y carpetas sin clave pero con un plugin simple puedes poner contrase\u00f1a a algunas carpetas individuales, facilmente creas una carpeta y agregas un archivo llamado \u00ab<strong>gi-security.php\u00bb<\/strong>, con el siguiente contenido:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/\/PLUGIN DE SEGURIDAD EXTRA PARA DIFERENTE CARPETA \/\/\/\/\/\/\n\/\/ archivo gi-security.php , donde pongas esto si pedira clave! \n\/\/y puede ser una clave diferente por carpeta pero con que \n\/\/logees alguna de las carpetas ya entrara a las demas \n\/\/carpetas con contrase\u00f1a asi que precaucion.\n\n\/\/ 1 = pedir\u00e1 contrase\u00f1a, 0 = acceso libre\n$versinclave = 1;  \n\/\/ 0 = clave simple, 1 = clave avanzada con hash (En esta opcion tienes q crear tu hash ejem: $2y$12$RcgZxApBg\/cXAcpXcaZ0QuUf3hBjmcl4bZ....)\n$passwordadvance = 1;  \n\/\/ Modo b\u00e1sico (clave visible)\n$password = \"1111\";\n\/\/ Modo avanzado (clave hasheada con bcrypt)\n$password_hashed = '$2y$12$RcgZxApBg\/cXAcpXcaZ0QuUf3hBjmcl4bZbonIQvWLyK4.0E0hjrO';\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n?><\/code><\/pre>\n\n\n\n<p>y con ese simple cambio aunque tu <strong>globalindex.php <\/strong>lo tengas configurado para que no pida password en las carpetas que pongas este archivo si pedira password.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><\/h3>\n\n\n\n<p>Este archivo lo puedes mejorar con el tiempo, agregando:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Contador de elementos encontrados.<\/li>\n\n\n\n<li>Buscador dentro de la carpeta. (Aun nos falta esto)<\/li>\n\n\n\n<li>\u00cdconos para archivos y carpetas.<\/li>\n\n\n\n<li>Responsive design (adaptado a m\u00f3viles).<\/li>\n\n\n\n<li>Contrase\u00f1a para acceder a las carpetas.<\/li>\n\n\n\n<li><strong>MODO solo con password y modo publico (no pedira password, se configura en el mismo archivo)<\/strong><\/li>\n\n\n\n<li><strong>Se agregaron mas themes.<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Muchas de esas caracter\u00edsticas ya le agrege al <strong>globalindex<\/strong> que esta publicado en mi Github, tambien tiene themes y contrase\u00f1a.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"713\" height=\"856\" src=\"https:\/\/zidrave.net\/wp-content\/uploads\/2025\/10\/image-2.png\" alt=\"\" class=\"wp-image-4655\" srcset=\"https:\/\/zidrave.net\/wp-content\/uploads\/2025\/10\/image-2.png 713w, https:\/\/zidrave.net\/wp-content\/uploads\/2025\/10\/image-2-250x300.png 250w\" sizes=\"auto, (max-width: 713px) 100vw, 713px\" \/><\/figure>\n\n\n\n<p>Con esta herramienta no solo mejoras la est\u00e9tica, sino tambi\u00e9n la seguridad y la experiencia de usuario al navegar por las carpetas de tu servidor o Web para compartir archivos.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u2705 Ahora tu servidor Apache y tus subdominios tendr\u00e1n un <strong>listado de carpetas moderno, seguro y personalizable<\/strong>, todo gestionado desde un solo archivo <code>globalindex.php<\/code>.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando trabajamos con un servidor web como Apache, es muy<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[10140,2375],"tags":[2131,4859,12945,4867,12942,12941,12936,12937,3622,12944,12939,1780,299,12938,17,12940,12943,4766,12946,12935],"class_list":["post-4641","post","type-post","status-publish","format-standard","hentry","category-cursos","category-internet","tag-alias","tag-apache","tag-apache2","tag-contrasena","tag-directorio-raiz","tag-diseno-responsivo","tag-fallbackresource","tag-globalindex-php","tag-htaccess","tag-listado-de-archivos","tag-opciones-indexes","tag-optimizacion","tag-personalizacion","tag-php-personalizado","tag-seguridad","tag-servidor-linux","tag-subdominios","tag-ubuntu","tag-virtualhost","tag-webserver"],"_links":{"self":[{"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/posts\/4641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/comments?post=4641"}],"version-history":[{"count":13,"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/posts\/4641\/revisions"}],"predecessor-version":[{"id":4677,"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/posts\/4641\/revisions\/4677"}],"wp:attachment":[{"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/media?parent=4641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/categories?post=4641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/tags?post=4641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}