Е

Техническое руководство проекта secserpr.ru

Как собирался сайт — по шагам, с кодом и пояснениями
← На сайт
Руководство › Часть I. Фундамент › 02. .htaccess и SSI

02. .htaccess и SSI

Прежде чем собирать сайт из отдельных «кирпичей» (partials), нужно сказать серверу: «обрабатывай команды SSI». По умолчанию сервер отдаёт HTML как есть — он не знает, что строчки вида <!--#include ... --> — это не комментарий, а команда.

За эту настройку отвечает файл .htaccess — небольшой конфигурационный файл в корне сайта. Разберём его построчно.

Полный файл

.htaccess
# ============================================================
# ФАЙЛ: .htaccess
# АВТОР: Ефимов Андрей Михайлович
# НАЗНАЧЕНИЕ: Включает обработку SSI-директив в HTML-файлах.
# ============================================================

Options +Includes
AddOutputFilter INCLUDES .html .shtml
ErrorDocument 404 /404.html

Пятнадцать строк — а сколько за ними. Идём по порядку.

Строки 1–5: комментарии с паспортом

.htaccess
# ============================================================
# ФАЙЛ: .htaccess
# АВТОР: Ефимов Андрей Михайлович
# НАЗНАЧЕНИЕ: Включает обработку SSI-директив в HTML-файлах.
# ============================================================

В .htaccess комментарии начинаются с символа решётки #. Всё, что идёт после решётки до конца строки, сервер игнорирует.

Мы поставили наверху блок-паспорт — тот самый, что утверждён в стандарте проекта. Через год любой человек, открывший файл, за десять секунд поймёт, что это за файл и зачем он. Это и есть «инженерный след».

Важно: два вида комментариев

В .htaccess используется #. В HTML — <!-- ... -->. В CSS — /* ... */. Не путать: сервер парсит каждый файл своим синтаксисом.

Строка 6: пустая строка-разделитель

Пустая строка не несёт смысла для сервера, но разделяет блок паспорта и рабочую часть. Читаемость важнее экономии байтов.

Строка 7: Options +Includes

.htaccess
Options +Includes

Это главная команда всего файла. Без неё SSI работать не будет.

Читается как: «к текущей директории и всем вложенным — включить серверные включения».

Внимание: на некоторых тарифах отключено

Некоторые хостинги запрещают директиву Options в .htaccess из соображений безопасности. Если сайт выдаст ошибку 500 — попробуйте убрать эту строку и оставить только AddOutputFilter. На Timeweb Options +Includes работает штатно.

Строка 8: AddOutputFilter INCLUDES .html .shtml

.htaccess
AddOutputFilter INCLUDES .html .shtml

Если первая команда разрешила SSI «в принципе», то эта говорит: «применяй SSI к файлам с расширением .html и .shtml».

По умолчанию Apache обрабатывает SSI только у файлов .shtml. Это исторически сложившаяся практика: .shtml явно говорит серверу «тут есть SSI». Наши страницы — .html, и их нужно «научить» SSI через эту директиву.

Пример: что было бы без этой строки

Сервер получил бы запрос /index.html, увидел там SSI-директиву, решил, что это обычный HTML-комментарий, и отдал бы его браузеру как есть. Браузер тоже проигнорировал бы — комментарий же. И пользователь увидел бы пустое место вместо шапки.

Строка 9: ErrorDocument 404 /404.html

.htaccess
ErrorDocument 404 /404.html

Эта строка к SSI не относится — она про страницу ошибки. Если пользователь введёт несуществующий адрес, сервер покажет не стандартное «Not Found», а наш файл /404.html.

Внимание: не путать с полным URL

Нельзя писать ErrorDocument 404 https://secserpr.ru/404.html — в этом случае сервер отдаст страницу со статусом 200 OK. Поисковики воспримут это как «страница существует» и проиндексируют её как обычную. Правильный путь — локальный, от корня сайта: /404.html.

Что должно получиться в итоге

После сохранения .htaccess в корне сайта и обновления браузера с Ctrl+F5 — SSI начнёт работать.

До и после
ДО .htaccess                     ПОСЛЕ .htaccess
---------------                  ---------------
SSI-директива в HTML             её содержимое вклеено:
(сервер её игнорирует,            логотип, SVG, бургер,
отдаёт как комментарий)           текст заголовка

Браузер видит                    Браузер видит
пустое место                     готовую шапку

Тест SSI: как проверить, что всё работает

Прежде чем строить сайт, убедимся, что сервер понимает SSI. Создайте в корне файл test.shtml со следующим содержимым:

test.shtml
<h1>Проверка SSI</h1>
<!--#echo var="DATE_LOCAL" -->

#echo — команда SSI, которая «печатает» значение переменной. Переменная DATE_LOCAL содержит текущую дату и время на сервере.

Откройте в браузере:

URL
https://secserpr.ru/test.shtml
Ожидаемый результат

На странице увидите заголовок «Проверка SSI» и текущую дату с временем — например: Saturday, 12-Sep-2026 14:23:45 MSK. Это значит, сервер выполнил SSI-команду и подставил результат в HTML.

Если дата не появилась

Проверьте три вещи: (1) файл называется именно test.shtml; (2) .htaccess лежит в корне; (3) подождите 1–2 минуты — Apache кэширует .htaccess, изменения могут примениться не сразу.

После успешной проверки test.shtml можно удалить — он больше не нужен.

Итог

Теперь, когда сервер умеет собирать страницы из частей, можно создавать сами части — partials. Об этом следующий раздел.