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

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

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

  • Гибкость: конфигурационные файлы позволяют администраторам веб—серверов точно настроить параметры сервера в соответствии с требованиями конкретного сайта или приложения. Можно настроить различные параметры, такие как поведение сервера, параметры безопасности, виртуальные хосты и конфигурации модулей;
  • Простота использования: конфигурационные файлы, как правило, написаны интуитивно понятным синтаксисом для человека, что облегчает администраторам понимание и изменение настроек. Такая простота позволяет быстро вносить изменения и дополнения без использования сложного пользовательского интерфейса;
  • Контроль версий: конфигурационные файлы можно контролировать по версиям с помощью таких инструментов, как Git, что облегчает отслеживание изменений, совместную работу с командой и, при необходимости, возврат к предыдущим конфигурациям;
  • Переносимость: конфигурационные файлы можно переносить между различными серверными средами, что упрощает развертывание веб-сайта или приложения на новых серверах с теми же настройками;
  • Автоматизация: конфигурационные файлы можно изменять или генерировать программно, что позволяет автоматизировать настройку и обслуживание сервера. Это особенно полезно при работе с несколькими серверами или при развертывании сайтов в облачной среде;
  • Безопасность: хранение конфигурационных параметров отдельно от кода приложения повышает уровень безопасности. В случае компрометации кода приложения конфиденциальные параметры сервера остаются защищенными в конфигурационных файлах;
  • Эффективность: веб—серверы могут быстро считывать и разбирать конфигурационные файлы при запуске, что делает процесс внесения изменений эффективным и быстрым;
  • Детализация: конфигурационные файлы позволяют администраторам отдельно контролировать различные аспекты работы сервера. Например, они могут настраивать конкретные параметры для различных виртуальных хостов, каталогов или путей URL;
  • Стандартизация: многие веб—серверы используют общие форматы конфигурационных файлов, такие как .htaccess Apache или nginx.conf Nginx, что позволяет администраторам применять свои знания и опыт для различных конфигураций серверов.

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

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

Требования

  • Административные права;
  • Ubuntu 20.04 или более поздняя версия;
  • Начальные знания о работе ОС;
  • Веб—сервер Apache.

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

Первым шагом в этом руководстве будет обновления и установка пакетов для всей системы, для этого введите приведенную ниже команду 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 может варьироваться в зависимости от операционной системы и способа установки. Однако ниже приведена общая организация, используемая в большинстве инсталляций:

  • apache2.conf: Этот файл служит центральным конфигурационным файлом Apache, содержащим глобальные настройки и определяющим параметры сервера. Ports.conf: Важнейший конфигурационный файл, отвечающий за указание портов, на которых прослушивается сервер.
  • sites-available/: Этот каталог содержит конфигурационные файлы для каждого виртуального хоста. Здесь можно задать различные конфигурации хостов. Включенные конфигурации хостов затем символически связываются с каталогом «sites-enabled/».
  • mods-available/: В этом каталоге находятся конфигурационные файлы для различных модулей Apache, позволяющие управлять и включать/выключать определенные функции.
  • mods-enabled/: Состоит из символических ссылок, которые соединяют активированные модули из каталога «mods-available/», позволяя использовать их в Apache.
  • conf-available/: В этом каталоге находятся дополнительные конфигурационные файлы, позволяющие расширять и настраивать параметры Apache.
  • conf-enabled/: В этом каталоге находятся символические ссылки на активированные дополнительные конфигурации из каталога «conf-available/». Это позволяет включать дополнительные конфигурации без изменения основных конфигурационных файлов.

Теперь мы можем настроить файл 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—адресов, что делает его важным компонентом для оптимизации и настройки веб—сервера в соответствии с требованиями конкретного сайта или приложения.

Источник: https://telegra.ph/Sozdanie-i-nastrojka-htaccess-07-30

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

Яндекс.Метрика Рейтинг@Mail.ru Resurs.kz: сайты Казахстана и раскрутка сайта

Thanks: Studenthelp78