- Inicio
- Documentación
- Archivos, carpetas y direcciones
Archivos, carpetas y direcciones
Índice
- La estructura de la carpeta eclair
- ¿Cómo se sirve una página?
- ¿Qué contiene la carpeta data?
- Las carpetas cache y media
- cache/
- media/
- ¿Qué poner en eclair-config.php?
- Las reglas del .htaccess explicadas
- La configuración de Nginx
- ¿Qué permisos dar a los archivos y carpetas?
- ¿Qué archivos y carpetas incluir en la copia de seguridad?
- Las direcciones que genera Éclair
- Las direcciones de los contenidos
- Preguntas frecuentes sobre los archivos
Índice
- La estructura de la carpeta eclair
- ¿Cómo se sirve una página?
- ¿Qué contiene la carpeta data?
- Las carpetas cache y media
- cache/
- media/
- ¿Qué poner en eclair-config.php?
- Las reglas del .htaccess explicadas
- La configuración de Nginx
- ¿Qué permisos dar a los archivos y carpetas?
- ¿Qué archivos y carpetas incluir en la copia de seguridad?
- Las direcciones que genera Éclair
- Las direcciones de los contenidos
- Preguntas frecuentes sobre los archivos
En Éclair, todo lo que forma tu sitio vive en archivos y carpetas que puedes ver por FTP: no hay base de datos. Esta referencia describe la estructura de carpetas, la función de cada archivo de data/, los ajustes de eclair-config.php, las reglas del .htaccess y de Nginx, los permisos necesarios, qué incluir en las copias de seguridad y todas las direcciones que el sitio genera solo.
La estructura de la carpeta eclair
Es el contenido de esta carpeta lo que subes a la carpeta pública de tu hosting (public_html, www…).
eclair/
├── index.php controlador frontal: sirve la caché sin cargar la aplicación
├── .htaccess reescritura, protecciones, compresión, caché del navegador
├── eclair-config.exemple.php plantilla de los ajustes avanzados opcionales
├── app/ el código de Éclair (nunca accesible desde la web)
│ ├── bootstrap.php arranque: versión de PHP, eclair-config.php, carga
│ ├── manifest.php huellas originales para el control de integridad
│ ├── lib/ clases: Content, Blocks, Seo, Analyzer, Media, Auth, Mcp…
│ ├── admin/views/ pantallas de la administración (.php.gz en el archivo ZIP)
│ ├── install/ asistente de instalación y pantalla «Instalación bloqueada»
│ ├── lang/ traducciones de la administración (6 idiomas, JSON comprimido)
│ └── theme/ plantillas del sitio público, theme.css, themes/, directions.css
├── assets/
│ ├── admin/ CSS y JavaScript de la administración
│ └── site/site.js el único script del sitio público (1,2 KB comprimido)
├── data/ contenidos, ajustes, cuentas: nunca público
├── cache/ páginas generadas: nunca público
└── media/ imágenes subidas, iconos del sitio, fuente de los títulos
app/ y assets/ contienen el código: una actualización los sustituye. Tus datos están en data/ y media/, que las actualizaciones no tocan nunca. El archivo ZIP oficial contiene también, junto a la carpeta eclair, los archivos LISEZ-MOI.txt, LICENSE.txt y THIRD-PARTY-NOTICES.txt: no hace falta subirlos a tu hosting.
¿Cómo se sirve una página?

- Toda petición de página llega a
index.php; las imágenes, los CSS y los scripts los sirve directamente el servidor. Para una lectura (GEToHEAD),index.phpleecache/runtime.php: caché activa, fecha de caducidad, dominio y HTTPS exigidos. - Si la página existe en
cache/pages/, se envía tal cual, con su ETag; un navegador que ya la tiene recibe una respuesta304 Not Modified. - Si no,
app/bootstrap.phparranca la aplicación: comprueba la versión de PHP, leeeclair-config.phpsi existe y después dirige la petición a la instalación, la administración, el formulario, el conector MCP o el sitio. La página generada se guarda en caché para las visitas siguientes.
El detalle del código está en La arquitectura de Éclair.
¿Qué contiene la carpeta data?
Cada archivo de data/ es un archivo .php que empieza por la línea <?php exit; ?>, seguida de datos JSON. Aunque un servidor ignorara los .htaccess, abrirlo en un navegador no mostraría nada. Las escrituras son atómicas (archivo temporal y luego cambio de nombre) y los archivos son privados.
| Archivo o carpeta | Contenido | En la copia de seguridad ZIP |
|---|---|---|
site.php | Todos los ajustes de las pestañas de Ajustes | Sí |
users.php | Cuentas, huellas de las contraseñas, verificación en dos pasos | Sí |
keys.php | Claves secretas creadas durante la instalación (secreto del sitio, clave de IndexNow) | Sí |
vault.php | Claves de API del asistente IA, cifradas | No |
index.php | Resumen de todos los contenidos, para listarlos y encontrar rápido una dirección | Sí |
content/ | Un archivo por página, artículo o producto | Sí |
revisions/ | Las 20 últimas versiones de cada contenido | Sí |
search.php | Texto de los contenidos para la búsqueda del sitio | Sí |
media.php | Registro de la biblioteca de medios: archivos, dimensiones, textos alternativos | Sí |
categories.php, menus.php, redirects.php | Categorías, menús y redirecciones | Sí |
custom-css.php | Tu CSS personalizado | Sí |
inbox.php y messages/ | Bandeja de entrada del formulario, 500 mensajes como máximo | Sí |
indexnow.php | Fecha y resultado del último envío a IndexNow | Sí |
logs/ | Registro de seguridad y errores técnicos, 1 MB como máximo cada uno | Sí |
sessions/ | Sesiones abiertas, con un nombre en forma de hash | No |
limits/ | Contadores contra la fuerza bruta y el spam | No |
ai/ | Gastos, conversaciones (30 por persona), propuestas, anulaciones, conexiones MCP | No |
install-window.php | Inicio de la ventana de instalación de 2 horas; se borra al terminar la instalación | No aplica |
reset.php | Rescate de «contraseña olvidada», lo creas tú y se borra automáticamente | No |
Las carpetas cache y media
cache/
| Elemento | Función |
|---|---|
runtime.php | Ajustes del camino rápido: caché activa, caducidad en el próximo artículo programado, dominio y HTTPS exigidos |
pages/ | Una página generada por dirección, con el nombre de la huella md5 de su ruta: una línea de cabeceras y de ETag, y después el HTML |
backup-….zip | Copia de seguridad en plena descarga, que se borra después; si la descarga se interrumpió, se elimina al vaciar la caché, al menos una hora más tarde |
La caché se vacía sola con cada cambio, y a la hora prevista para un artículo programado. Para vaciarla a mano: Ajustes › Avanzado › Vaciar la caché.
media/
| Elemento | Función |
|---|---|
2026/11/… | Imágenes subidas, ordenadas por año y por mes |
photo.jpg, .png, .webp o .gif | La imagen recodificada, de 2000 px de ancho como máximo, sin datos EXIF ni GPS (con la extensión GD) |
photo-480.webp a photo-1600.webp | Variantes WebP de 480, 800, 1200 y 1600 px (solo las más pequeñas que el original), más una versión WebP del tamaño de la imagen |
photo-og.jpg | Imagen para compartir de 1200 × 630, creada la primera vez que se usa |
site/icon-32.png, icon-180.png, icon-192.png, icon-512.png | Iconos del sitio: favicon y pantalla de inicio de los móviles |
fonts/ | Fuente de los títulos de tu dirección de arte (.woff2), descargada una sola vez |
El archivo media/.htaccess solo autoriza imágenes: ni scripts, ni páginas HTML, ni SVG, ni listados de archivos, con una política de seguridad que prohíbe cualquier contenido activo. Las subidas se explican en Imágenes y biblioteca de medios de Éclair.
¿Qué poner en eclair-config.php?
Este archivo opcional se coloca junto a index.php. Copia eclair-config.exemple.php con el nombre eclair-config.php y quita el comentario de lo que necesites. Se lee al arrancar la aplicación, antes que todo lo demás, y el control de integridad no lo señala como archivo desconocido.
<?php
defined('ECLAIR') || exit;
// Detalle de los errores, mientras resuelves un problema:
// define('ECLAIR_DEBUG', true);
// Datos fuera de la carpeta pública (mueve antes la carpeta data):
// define('ECLAIR_DATA', '/home/micuenta/eclair-data');
// Protección reforzada de las claves de API, que se define antes de guardarlas:
// define('ECLAIR_SECRET', 'una-frase-secreta-larga');
| Constante | Efecto | Precaución |
|---|---|---|
ECLAIR_DEBUG | Muestra el detalle de los errores | También desactiva la caché estática: borra la línea cuando el problema esté resuelto |
ECLAIR_DATA | Guarda los datos en otra ubicación (ruta absoluta) | Mueve antes data/, y acuérdate de incluir la nueva ubicación en tus copias de seguridad |
ECLAIR_SECRET | Añade una frase secreta al cifrado de las claves de API | Defínela antes de guardar tus claves; si la añades o la cambias después, tendrás que volver a pegarlas |
El código reconoce también dos constantes técnicas que no aparecen en la guía oficial: ECLAIR_AI_ENDPOINTS (dirección alternativa de un servicio de IA, para una pasarela o para pruebas) y ECLAIR_FONTS_URL (origen de las fuentes, por defecto Fontsource a través de cdn.jsdelivr.net). Úsalas solo si sabes por qué. ECLAIR_VERSION y ECLAIR_ROOT las fija index.php.
Las reglas del .htaccess explicadas
El .htaccess de Éclair funciona tanto en la raíz de un dominio como en una subcarpeta. Solo usa directivas permitidas en los hostings compartidos: nada de Options ni de php_flag. Esta es su parte de reescritura:
RewriteEngine On
# RewriteBase /
RewriteCond %{HTTP:Authorization} .
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^(app|data|cache)(/|$) - [R=404,L]
RewriteRule (^|/)\.(?!well-known/) - [R=404,L]
RewriteRule ^(?!index\.php$).*\.(php\d?|phtml|phar|inc)$ - [R=404,NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L,QSA]
RewriteBase /sigue comentada: quítale el comentario solo si tu proveedor lo exige, algo poco habitual.- Las dos líneas
Authorizationtransmiten a PHP la cabecera de autorización que algunos hostings eliminan. El conector MCP la necesita. app/,data/ycache/responden 404 desde la web.- Los archivos ocultos (
.git,.env…) responden 404, salvo la carpeta.well-known. - Ningún script PHP se ejecuta fuera de
index.php. - Todo lo que no sea un archivo existente pasa por
index.php, incluso una carpeta: nunca se muestra un listado de archivos.
El resto del archivo activa la compresión Brotli o Gzip de las páginas HTML, las hojas CSS, el JavaScript, los datos JSON y XML, los feeds RSS, las imágenes SVG y el Markdown, una caché del navegador de un año para las imágenes, los CSS, los scripts y las fuentes (Cache-Control: public, max-age=31536000, immutable), y declara los tipos WebP, AVIF y WOFF2. Las carpetas app/, data/ y cache/ tienen además su propio .htaccess, que deniega cualquier acceso: la protección es doble.
La configuración de Nginx
Nginx ignora los .htaccess: reproduce estas reglas en el bloque server de tu sitio. Es la configuración que da la guía oficial.
location ~ ^/(app|data|cache)(/|$) { return 404; }
location ~ /\.(?!well-known/) { return 404; }
location ^~ /media/ {
location ~* \.(php\d?|phtml|phar|s?html?|svgz?|xml|js)$ { return 404; }
add_header X-Content-Type-Options nosniff;
expires 1y;
}
location ~* \.(webp|avif|jpe?g|png|gif|ico|css|js|woff2)$ { expires 1y; add_header Cache-Control "public, immutable"; }
location / { try_files $uri /index.php$is_args$args; }
location = /index.php {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
location ~ \.php$ { return 404; }
- Las dos primeras reglas cierran las carpetas internas y los archivos ocultos, salvo
.well-known. - El bloque
/media/rechaza scripts, páginas HTML, SVG y XML, y guarda los archivos en caché durante un año. try_filesenvía aindex.phptodo lo que no sea un archivo existente.- Solo
index.phppasa a PHP-FPM: adaptafastcgi_passal socket de tu servidor. - Para que el asistente IA muestre sus respuestas a medida que se generan, añade
fastcgi_buffering off;en el bloque PHP.
HTTPS, proxy y CDN se tratan en Nginx, VPS, proxy y CDN.
¿Qué permisos dar a los archivos y carpetas?
- PHP debe poder escribir en
data/,cache/ymedia/. El asistente de instalación comprueba cada una («Carpeta “data” con permisos de escritura») y, si falla, aconseja dar permisos de escritura (755) por FTP. - Después, Éclair crea sus archivos de datos con permisos 0600 (solo puede leerlos la cuenta que ejecuta PHP), sus subcarpetas de
data/y decache/con 0700, y las demedia/con 0755. - Evita los permisos 777, que dejan escribir a cualquier cuenta del servidor. Si 755 no basta, pregunta a tu proveedor con qué cuenta se ejecuta PHP.
¿Qué archivos y carpetas incluir en la copia de seguridad?
| Qué guardar | Por qué | Cómo |
|---|---|---|
data/ | Contenidos, ajustes, cuentas, CSS personalizado | Seguridad › Descargar una copia de seguridad, o FTP |
media/ | Imágenes, iconos, fuente de los títulos | La misma copia ZIP, o FTP |
eclair-config.php | Si has creado uno | FTP |
Plantillas modificadas en app/theme/ | Una actualización las sustituye | FTP, antes de cada actualización |
Carpeta indicada en ECLAIR_DATA | Si has movido tus datos | FTP |
La copia de seguridad ZIP no contiene ni las claves de API, ni las conversaciones y conexiones MCP, ni las sesiones. Después de restaurarla en otro servidor, vuelve a pegar tus claves de API y conecta de nuevo Claude o ChatGPT. Para restaurar, sustituye data/ y media/ por los de la copia (por FTP) y vacía la caché desde la administración.

El procedimiento de actualización completo está en Seguridad avanzada y mantenimiento.
Las direcciones que genera Éclair
| Dirección | Contenido | Cuándo existe |
|---|---|---|
/sitemap.xml | Mapa del sitio con imágenes y versiones de idioma | Siempre; vacío si el sitio está oculto a los buscadores |
/robots.txt | Reglas para los robots, incluidos 30 robots de IA, y enlace al sitemap | Siempre |
/llms.txt | Mapa del sitio para las IA | Opción Publicar /llms.txt |
/llms-full.txt | Todo el contenido en Markdown | Opciones /llms.txt y /llms-full.txt |
/feed.xml | Feed RSS de los 20 últimos artículos, con el texto completo | Blog activado |
/products.xml | Feed de productos para Google Merchant Center | Tienda abierta |
/mi-pagina.md, /index.md | Versión Markdown de una página, en noindex con su URL canónica | Opción Versión Markdown de cada página, salvo en las páginas en noindex |
/favicon.ico | Icono de 32 px | En cuanto existe el icono del sitio |
/buscar?q=… | Resultados de la búsqueda, en noindex | Opción Búsqueda en el sitio |
/<clave>.txt | Prueba de propiedad de IndexNow | IndexNow activado |
/_eclair/mcp | Conector MCP | Permitir conexiones MCP |
/_eclair/oauth/authorize, /token, /register | Autorización OAuth del conector | Misma condición |
/.well-known/oauth-protected-resource, /.well-known/oauth-authorization-server, /.well-known/openid-configuration | Descubrimiento OAuth | Misma condición |
/_eclair/contact | Recepción del formulario de contacto | Siempre |
/_eclair/edit/<id> | Botón ✏️ Editar del sitio, que lleva al editor | Personas con la sesión iniciada |
/__eclair/ping | Prueba de la reescritura y verificación de la dirección del sitio | Siempre |
Las direcciones de los contenidos
| Contenido | Dirección en un sitio en español |
|---|---|
| Página | /mi-pagina, o /padre/hija para una subpágina (4 niveles como máximo) |
| Inicio | /; la dirección propia de la página de inicio redirige a / |
| Artículo | /blog/mi-articulo |
| Páginas siguientes del blog | /blog/pagina/2 |
| Categoría de artículos | /blog/mi-categoria |
| Página de autor | /blog/autor/nombre-apellido |
| Catálogo | /tienda, y después /tienda/pagina/2 |
| Categoría de productos, producto | /tienda/mi-categoria, /tienda/mi-producto |
| Administración | La dirección elegida durante la instalación |
Las palabras de las direcciones siguen el idioma del sitio: page en francés y en inglés, pagina en español, italiano y portugués, seite en alemán; auteur, autor, author o autore; recherche, buscar, search, suche, cerca o pesquisa; boutique, tienda, shop, negozio o loja.
Una sola dirección por contenido: Éclair redirige con una 301 las variantes en mayúsculas, con barra final, con barras dobles o con index.php, así como http a https cuando HTTPS está forzado, y www o sin www una vez verificada la dirección oficial.
Algunas palabras están reservadas y no pueden usarse como dirección de página: app, data, cache, assets, media, index, admin, _eclair, __eclair, sitemap, robots, feed, llms, llms-full, favicon, wp-admin, wp-login, además de la dirección de tu administración, la del blog, la palabra de la búsqueda y la dirección de la tienda una vez configurada. El SEO de estas direcciones se explica en El SEO con Éclair.
Preguntas frecuentes sobre los archivos
¿Puedo borrar la carpeta cache?
No borres la carpeta en sí: contiene su propia protección .htaccess. Usa Ajustes › Avanzado › Vaciar la caché, que solo borra las páginas generadas; se vuelven a crear en la siguiente visita.
¿Dónde se guardan mis artículos?
En data/content/, un archivo por contenido, con sus 20 últimas versiones en data/revisions/. Las imágenes están en media/, ordenadas por año y por mes.
¿Se puede colocar la carpeta data fuera de la carpeta pública?
Sí, si tu proveedor lo permite: mueve la carpeta data e indica su ruta absoluta con ECLAIR_DATA en eclair-config.php. Añade esta nueva ubicación a tus copias de seguridad.