hostprofi.ru
Подобрать хостинг
Термин·буква H

.htaccess

краткое определение

.htaccess — конфигурационный файл Apache, позволяющий задавать настройки веб-сервера для конкретной директории без перезапуска сервера: редиректы, права доступа, rewrite-правила, PHP-настройки.

Файл .htaccess (HyperText Access) — директивный файл конфигурации Apache HTTP Server, читаемый при каждом запросе к директории. Позволяет изменять конфигурацию Apache без прав root и без редактирования глобального httpd.conf. Имя начинается с точки — на UNIX-системах файл скрыт от обычного листинга директории.

Основные применения

  • Редиректы: Redirect 301 /old /new — постоянный редирект; RedirectMatch 301 ^/blog/(.*) /articles/$1 — с захватом части URL.
  • URL-rewriting: mod_rewrite для ЧПУ в WordPress, Joomla, PrestaShop — все CMS включают готовый блок при установке.
  • Ограничение доступа: Require ip 192.168.1.0/24 — только для IP-диапазона; Require valid-user — базовая HTTP-аутентификация.
  • PHP-настройки: php_value upload_max_filesize 128M, php_flag display_errors Off.
  • Заголовки безопасности: Header set X-Content-Type-Options "nosniff", Header always set Strict-Transport-Security "max-age=31536000".
  • MIME-типы: AddType application/wasm .wasm, AddType font/woff2 .woff2.
  • Кэширование: ExpiresActive On, ExpiresByType image/jpeg "access plus 1 year".

Типичный .htaccess для WordPress

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Как Apache читает .htaccess

При включённом AllowOverride All Apache при каждом запросе проверяет наличие .htaccess во всех директориях от корня до запрошенного пути. Для запроса /blog/post/title/ Apache читает 3–4 файла: /.htaccess, /blog/.htaccess, /blog/post/.htaccess. Это дополнительные disk I/O на каждый запрос. При 10 000 запросов/мин — заметная нагрузка на I/O-подсистему сервера. Рекомендация для VPS: переносить директивы из .htaccess в блок <Directory> в конфиге Apache и ставить AllowOverride None — значительно ускоряет обработку запросов.

История

Файлы .htaccess появились в NCSA httpd в 1993–1994 годах как механизм управления доступом для пользователей без прав администратора на многопользовательских UNIX-серверах. Apache перенял механизм с ранних версий. mod_rewrite появился в Apache 1.2 (1996) — именно .htaccess-правила сделали его главным инструментом SEO-редиректов. С распространением VPS и Nginx после 2010 года необходимость в .htaccess снизилась, но на виртуальном хостинге он по-прежнему незаменим.

Безопасность .htaccess

Никогда не раскрывай содержимое .htaccess пользователям. Добавь защиту:

<Files .htaccess>
Require all denied
</Files>

Эта директива предотвращает прямой доступ к файлу через браузер. Также защити файлы конфигурации CMS: wp-config.php, .env, composer.json. Файл .htaccess доступен для чтения всем процессам Apache — не храни в нём пароли или секретные ключи.

На что обращать внимание

Виртуальный хостинг с Apache или OpenLiteSpeed поддерживает .htaccess из коробки. На Nginx файл .htaccess игнорируется — нужно конвертировать правила в формат Nginx location-блоков. Сервис nginxconfig.io помогает перевести mod_rewrite-правила. Для LiteSpeed и OpenLiteSpeed .htaccess читается полностью, включая PHP-директивы. При переносе сайта с Apache на Nginx обязательно тестируйте все редиректы и rewrite-правила — поведение может отличаться.

Другие термины