Введение
Файл конфигурации каталога
Файл .htaccess (гипертекстовый доступ) — это файл конфигурации каталога, поддерживаемый несколькими веб-серверами, используемый для настройки вопросов доступа к веб-сайту, таких как перенаправление URL, сокращение URL, контроль доступа (для различных веб-страниц и файлов) и многое другое. Точка перед именем файла делает его скрытым в Unix-подобных средах. Сайт может содержать несколько файлов .htaccess, которые размещаются внутри структуры веб-сайта (то есть внутри каталогов и их подкаталогов), поэтому их также называют распределёнными файлами конфигурации. Файлы .htaccess действуют как подмножество глобального файла конфигурации сервера (например, httpd.conf) для каталога, в котором они находятся, или для всех его подкаталогов. Изначально .htaccess был предназначен для управления доступом к каталогам, например, для защиты содержимого Всемирной паутины с помощью пароля. Однако чаще файлы .htaccess определяют или переопределяют множество других настроек конфигурации, таких как тип контента, кодировка символов, обработчики Common Gateway Interface и т.д.
Формат и язык
Файлы .htaccess написаны на варианте директив Apache языка Perl Compatible Regular Expressions (PCRE). Изучение основ PCRE само по себе может помочь в освоении работы с этими файлами. По историческим причинам формат файлов .htaccess является ограниченным подмножеством глобального файла конфигурации сервера Apache HTTP httpd.conf, даже при использовании с веб-серверами, такими как Oracle iPlanet Web Server и Zeus Web Server, которые имеют существенно отличающиеся собственные глобальные файлы конфигурации.
Распространенное использование
Авторизация, аутентификация Файл .htaccess часто используется для указания ограничений безопасности для каталога, отсюда и название файла "access". Файл .htaccess часто сопровождается файлом .htpasswd, в котором хранятся допустимые имена пользователей и их пароли. Перезапись URL Серверы часто используют .htaccess для преобразования длинных и избыточных URL-адресов в более короткие и запоминающиеся. Блокировка (контроль доступа) Используйте Allow/Deny для блокировки пользователей по IP-адресу или домену. Также используется для блокировки вредоносных ботов, программ для скачивания контента и нежелательных рефералов. SSI Включение серверных включений. Отображение содержимого каталога Управление реакцией сервера при запросе каталога без указания конкретной веб-страницы. Настраиваемые сообщения об ошибках Изменение страницы, отображаемой при возникновении ошибки на стороне сервера, например HTTP 404 Not Found или, для информирования поисковой системы о перемещении страницы, HTTP 301 Moved Permanently. MIME-типы Инструкции для сервера о том, как обрабатывать различные типы файлов. Управление кэшем Файлы .htaccess позволяют серверу управлять кэшированием веб-браузерами и прокси-серверами для ускорения работы веб-сайтов, снижения потребления трафика, нагрузки на сервер и задержек. .htaccess также устанавливает срок действия кэша для ресурсов веб-страницы, чтобы при повторном посещении страницы элементы загружались из кэша браузера до истечения этого срока, а не запрашивались повторно с сервера. HTTPS и HSTS Реализация HTTPS и HSTS на серверах Apache во многом зависит от корректной перезаписи URL и информации в заголовках, указанных в файле .htaccess. Любая синтаксическая ошибка в файле при настройке HTTPS или HSTS может привести к сбою реализации.
Преимущества
Немедленные изменения. Поскольку файлы .htaccess считываются при каждом запросе, изменения, внесенные в эти файлы, вступают в силу немедленно – в отличие от основного файла конфигурации, для применения новых настроек которого требуется перезапуск сервера. Непривилегированные пользователи. Для серверов с несколькими пользователями, например, на общем веб-хостинге, часто желательно предоставить отдельным пользователям возможность изменять конфигурацию своего сайта. Использование файлов .htaccess позволяет такую индивидуализацию, и это могут делать непривилегированные пользователи, поскольку основные файлы конфигурации сервера не требуют изменений.
Недостатки
Контроль Apache с помощью основного файла конфигурации сервера httpd.conf часто предпочтительнее по соображениям безопасности и производительности:
Performance loss For each HTTP request, there are additional file system accesses for parent directories when using htaccess, to check for possibly existing htaccess files in those parent directories which are allowed to hold htaccess files. It is possible to programmatically migrate directives from htaccess to httpd. conf if this performance loss is a concern. Security Allowing individual users to modify the configuration of a server can cause security concerns if not set up properly. Syntax htaccess is usually very sensitive to syntax errors. Due to this any misspellings may lead to server errors and web resources in the directory with the erroneous htaccess not being displayed at all.
Потеря производительности: При использовании .htaccess для каждого HTTP-запроса выполняются дополнительные обращения к файловой системе родительских каталогов для проверки наличия в них файлов .htaccess, что может снизить производительность. Если это снижение производительности вызывает беспокойство, директивы можно программно перенести из .htaccess в httpd.conf.
Performance loss For each HTTP request, there are additional file system accesses for parent directories when using htaccess, to check for possibly existing htaccess files in those parent directories which are allowed to hold htaccess files. It is possible to programmatically migrate directives from htaccess to httpd. conf if this performance loss is a concern. Security Allowing individual users to modify the configuration of a server can cause security concerns if not set up properly. Syntax htaccess is usually very sensitive to syntax errors. Due to this any misspellings may lead to server errors and web resources in the directory with the erroneous htaccess not being displayed at all.
Безопасность: Предоставление отдельным пользователям возможности изменять конфигурацию сервера может привести к проблемам безопасности, если это не настроено должным образом.
Performance loss For each HTTP request, there are additional file system accesses for parent directories when using htaccess, to check for possibly existing htaccess files in those parent directories which are allowed to hold htaccess files. It is possible to programmatically migrate directives from htaccess to httpd. conf if this performance loss is a concern. Security Allowing individual users to modify the configuration of a server can cause security concerns if not set up properly. Syntax htaccess is usually very sensitive to syntax errors. Due to this any misspellings may lead to server errors and web resources in the directory with the erroneous htaccess not being displayed at all.
Синтаксис: .htaccess обычно очень чувствителен к синтаксическим ошибкам. Любые опечатки могут привести к ошибкам сервера и не отображению веб-ресурсов в каталоге с некорректным файлом .htaccess.
Performance loss For each HTTP request, there are additional file system accesses for parent directories when using htaccess, to check for possibly existing htaccess files in those parent directories which are allowed to hold htaccess files. It is possible to programmatically migrate directives from htaccess to httpd. conf if this performance loss is a concern. Security Allowing individual users to modify the configuration of a server can cause security concerns if not set up properly. Syntax htaccess is usually very sensitive to syntax errors. Due to this any misspellings may lead to server errors and web resources in the directory with the erroneous htaccess not being displayed at all.
В популярной культуре
Части видеоигры Mackerelmedia Fish 2020 года, исследующей темы интернет-культуры, были непосредственно внедрены в открытые каталоги .htaccess веб-сайта.