Основы
Структура статического сайта: страницы, папки и пути
Как разложить HTML, стили, скрипты и изображения, чтобы проект одинаково работал локально и на хостинге.
Структура проекта становится частью его адресов. Файл `catalog/index.html` отвечает за `/catalog/`, а изображение `assets/logo.svg` доступно по `/assets/logo.svg`. Чем точнее совпадают пути в коде и на диске, тем меньше отличий между локальным просмотром и опубликованным сайтом.
```text
site/
├── index.html
├── 404.html
├── contacts/
│ └── index.html
├── css/
│ └── main.css
├── js/
│ └── main.js
└── assets/
├── logo.svg
└── team.webp
```
## Относительные и абсолютные пути
Путь `assets/logo.svg` считается относительно текущей страницы. На главной он ведёт к нужному файлу, но из `contacts/index.html` браузер запросит `contacts/assets/logo.svg`. Корневой путь `/assets/logo.svg` начинается от домена и работает на любой странице проекта.
```html
<link rel="stylesheet" href="/css/main.css">
<img src="/assets/team.webp" alt="Команда проекта">
<script src="/js/main.js"></script>
```
Корневые пути подходят сайту, размещённому на отдельном домене. Для проекта, который должен работать внутри подпапки другого сайта, используются относительные пути или настраивается базовый адрес сборщика.
## Регистр и кириллица
Linux различает `Photo.JPG` и `photo.jpg`. Windows обычно нет, поэтому ошибка проявляется только после публикации. Единый нижний регистр и дефисы в именах уменьшают число таких расхождений: `team-photo.webp` предсказуемее, чем `Фото команды 2.JPG`.
Deploya пробует совместимый поиск при некоторых повреждениях кодировки и регистра, но это страховка для старых архивов, а не замена аккуратным именам.
## Главная и страница ошибки
В корне нужен `index.html`. Для неизвестного адреса Deploya ищет пользовательский `404.html`; если его нет, показывает системную страницу ошибки. Собственный файл 404 кладётся в корень рядом с главной страницей.
> Место для скриншота: дерево Assets с раскрытыми папками contacts, css, js и assets.
Архивировать следует саму структуру сайта, а не родительский каталог с несколькими версиями. Если после распаковки получается `site-v2/site-v2/index.html`, главная страница оказывается на лишнем уровне. В окне Assets это видно до публикации.