Файл .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-правила — поведение может отличаться.