23.06.2025

Создание и настройка .htaccess

Введение

Мы не можем представить себе современный мир без онлайн-маркетов, магазинов, поисковых систем, мессенджеров и всех ценных компонентов WEB, которые позволили нам общаться быстрее. Но новые возможности приносят нам и новые уязвимости и детали в веб—серверах, которые необходимо учитывать. Для этих целей нам нужна гибкий инструмент управления сервером – htaccess!

Конфигурирование веб—серверов с помощью конфигурационных файлов является распространенной и удобной практикой по нескольким причинам:

В целом конфигурационные файлы обеспечивают простой и эффективный способ управления веб—серверами, предоставляя администраторам возможность контроля и настройки для оптимизации производительности и безопасности сервера в соответствии с их конкретными потребностями.

В инструкции рассмотрим процесс создания и настройки файла .htaccess на примере VDS сервера, работающего под управлением ОС Ubuntu.

Требования

Установка и создание файла

Первым шагом в этом руководстве будет обновления и установка пакетов для всей системы, для этого введите приведенную ниже команду CLI:

apt update && apt upgrade -y

Скриншот №1 — Обновление

Если у вас уже есть веб-сервер Apache, то этот шаг установки можно пропустить, но если вы впервые занимаетесь установкой, то следуйте дальнейшим шагам. Введите приведенную ниже команду и убедитесь, что у вас есть необходимый пакет:

apt list | grep apache2

Скриншот №2 — Поиск пакета

После этого устанавливаем web—сервер, он запускается автоматически и начинает свою работу:

apt install apache2

Скриншот №3 — Установка

После установки Apache2, он будет автоматически запущен, а его конфигурационные файлы будут находиться в разных местах в зависимости от используемой ОС. В этом веб—сервере для настройки глобальных параметров мы используем конфигурационный файл httpd.conf (или apache2.conf в некоторых системах). Напоминаю! Htaccess мы используем для переопределения некоторых правил обработки клиентских запросов и оптимизации ответа сервера.

Убедитесь в том, что ваш веб—сервер разрешает использование файлов .htaccess. Для этого необходимо проверить, что в основном конфигурационном файле Apache2 (httpd.conf или apache2.conf) включена директива AllowOverride. Измените значение AllowOverride на All:

nano ./etc/apache2/apache2.conf

Скриншот №4 — Изменение значений

Если вы не можете найти нужный каталог, то воспользуйтесь командой ниже:

cd / && find ./ -name apache2.conf && find ./ -name httpd.conf

Скриншот №5 — Поиск конфига

Включив AllowOverride, вы предоставляете серверу возможность интерпретировать директивы, указанные в файлах .htaccess, расположенных в каталогах вашего сайта. Это позволяет создавать более гибкие конфигурации на уровне каталогов, повышая общую функциональность и безопасность веб—сервера.

В иерархии настройки параметров по умолчанию:

Скриншот №6 — Иерархия конфигов

Расположение файлов Apache может варьироваться в зависимости от операционной системы и способа установки. Однако ниже приведена общая организация, используемая в большинстве инсталляций:

Теперь мы можем настроить файл htaccess, который является переопределяющим расширением для нашей текущей конфигурации. Все изменения и значения этого файла будут влиять на конфигурацию в результате. Давайте продемонстрируем, как это работает на обычной конфигурации.

Сначала необходимо включить функцию override и указать DocumentRoot в конфигурации virtualhost, для чего зайти в CLI:

mkdir /etc/site-for-test
nano /etc/apache2/sites-available/000-default.conf

Скриншот №7 — Конфиг виртуального хоста

Измените параметр ServerName на свой домен и AllowOverride на значение All. Напоминание! В DNS—панели необходимо поставить запись соответствующую вашему публичному IP—адресу сервера! Измените параметр DocumentRoot для рабочей директории со страницами и файлами необходимого сайта. В данном случае мы создаем каталог site—for—test. Далее напишите первую простую страницу или, если вы используете свой собственный сайт, пропустите этот шаг:

nano /etc/site-for-test/index.html

Скриншот №8 — Главная страница

<! DOCTYPE html>
<html>
<head>
<title>TEST</title>
</head>
<body>
<h1>Hi, that test htaccess file!</h1>
</body>
</html>

Содержимое вашей страницы может иметь другую конфигурацию и структуру, но смысл тот же. Создадим в той же папке файл .htaccess, который выстраивает логическую цепочку между html и действиями пользователя:

nano /etc/site-for-test/.htaccess
RewriteEngine On
RewriteRule ^hello$ index.html [L]

Скриншот №9 — Перезаписанный конфиг

Эта конфигурация с помощью синтаксиса RewriteEngine On включает модуль rewrite на сервере и в следующей строке переписывает правила, которому буквально присвоена html—страница и атрибут [L]. Он означает, что последнее правило будет выполнено и остальные инструкции будут проигнорированы. Для корректной работы необходимо включить модуль rewrite, который входит в пакет apache2, и перезапустить службу:

sudo a2enmod rewrite && systemctl restart apache2

Скриншот №10 — Дополнительные шаги

Проверим результат наших действий:

Скриншот №11 — Страница в браузере

Взглянем на URL сайта, все работает — корректно:

Скриншот №12 — URL ссылка

Контроль доступа

Рассмотрим популярный пример использования .htaccess. Файл .htaccess служит мощным инструментом настройки, позволяющим контролировать доступ к файлам, папкам и целым каталогам ваших сайтов!

Order: Эта команда определяет последовательность выполнения директив. Она устанавливает приоритет последующих директив, независимо от их расположения в файле.

Deny: С помощью этой директивы можно запретить доступ к определенному каталогу с указанных адресов или IP—адресов.

Allow (разрешить): Напротив, эта директива разрешает доступ к каталогу только с указанных адресов или IP—адресов.

Используя эти команды, можно легко настроить доступ к определенным ресурсам веб—сервера. Например, с помощью .htaccess можно ограничить доступ к конфиденциальной информации в указанной папке или разрешить доступ только определенным IP—адресам, тем самым повысив безопасность и обеспечив контроль над ресурсами своего сайта. Откройте файл .htaccess, который мы создали ранее, и введите в него конфигурацию, дополняющую предыдущий синтаксис.

Order allow,deny
Allow 95.141.86.46

Этот конфиг определяет процесс доступа к папке на сервере, разрешим для только стороннего IP. В результате мы видим флаг Forbidden для входа на сайт с другого IP-адреса:

Скриншот №13 — Запрет на вход

Ограничение индексации

Для повышения безопасности можно запретить вывод списка каталогов в веб—сервере Apache. По умолчанию, если в каталоге не найден файл index.html или указанный файл, Apache выводит список всех файлов, присутствующих в этом каталоге. Чтобы отключить эту функцию и ограничить вывод списка каталогов, примените следующую конфигурацию:

Options -Indexes

Не найдено — 404

Для перенаправления посетителей на страницу 404 (страница «Not Found»), когда запрашиваемая страница отсутствует, можно реализовать следующий код:

nano /etc/site-for-test/error404.html

Введите в файл следующее содержимое:

<!DOCTYPE html>
<html>
<head>
<title>Page Not Found - 404 Error</title>
</head>
<h1>
<body>404 Page not found!</body>
</h1>
</html>

Затем добавляем в конфигурацию .htaccess и завершаем настройку:

ErrorDocument 404 /error404.html

Скриншот №14 — Ошибка 404

Перенаправление

Создайте html—страницу, как мы рассматривали в предыдущем шаге, и сделайте целевой файл для перенаправления:

nano /etc/site-for-test/targeturl.html

Чтобы добиться переадресации с «/hello» на «/target» с помощью 301 (постоянного) редиректа, можно использовать следующее правило RewriteRule в файле .htaccess:

RewriteRule ^hello$ /target [R=301,L]
RewriteRule ^hello$ index.html
RewriteRule ^target$ targeturl.html

RewriteEngine On: Включает RewriteEngine, позволяя использовать правила перезаписи в файле .htaccess.

RewriteRule ^hello$ /target [R=301,L]: Данное правило соответствует запросам к «/hello» (символы «^» обозначают начало, а “$” – конец URL) и перенаправляет их на «/target» с помощью 301—го (постоянного) редиректа. Флаг «R=301» указывает на постоянное перенаправление, а флаг «L» — на то, что это последнее правило, которое будет выполняться.

При такой конфигурации любой запрос к «/hello» будет перенаправлен на «/target» с кодом состояния 301, то есть это будет постоянное перенаправление. Другие правила, присутствующие в файле .htaccess после этого, не будут выполняться из-за флага «L».

Скриншот №15 — Перенаправление

Вывод

Файл .htaccess — это мощный инструмент для управления доступом к ресурсам на веб—сервере. Он предоставляет веб—администраторам возможность определять порядок выполнения директив, блокировать доступ с определенных IP—адресов или адресов с помощью директивы «Deny» и предоставлять доступ только к указанным местам с помощью директивы «Allow». Это дает администраторам возможность гибко настраивать управление доступом, обеспечивая безопасность и точный контроль над ресурсами сервера.

Кроме того, файл .htaccess выполняет и другие важные функции. Он может управлять индексами, предотвращая появление списков каталогов и тем самым повышая безопасность за счет отсутствия доступа к конфиденциальным файлам. Кроме того, он может обрабатывать ошибки 404 (Not Found), позволяя администраторам перенаправлять посетителей на пользовательскую страницу ошибок, если запрашиваемая страница отсутствует или недоступна.

Таким образом, файл .htaccess является универсальным и незаменимым инструментом для настройки веб-сервера. Он обеспечивает контроль над доступом, безопасностью, обработкой ошибок и перенаправлением URL—адресов, что делает его важным компонентом для оптимизации и настройки веб—сервера в соответствии с требованиями конкретного сайта или приложения.