
Файл .htaccess — мощный инструмент управления сайтом на Apache. Один маленький текстовый файл в корне сайта может настроить редиректы, защиту от хотлинков, кэширование, сжатие, защиту паролем и многое другое. Все рецепты в этой статье — готовые к использованию, проверенные, без лишней теории. Скопируйте нужный блок в свой .htaccess, и функция заработает.
Содержание
- Что такое .htaccess
- Как создать .htaccess
- 1. Принудительное HTTPS
- 2. Редирект с www на без www
- 3. Кастомная страница 404
- 4. Gzip-сжатие
- 5. Кэширование статики
- 6. Защита от хотлинков
- 7. 301 редирект отдельных страниц
- 8. Защита папки паролем
- 9. Блокировка/разрешение по IP
- 10. ЧПУ — убрать .html из URL
- Частые ошибки
- FAQ
Что такое .htaccess
.htaccess (от «hypertext access») — конфигурационный файл веб-сервера Apache. Точка в начале означает скрытый файл. Размещается в корне сайта или в любой подпапке. Правила применяются для текущей папки и всех вложенных.
Работает только на серверах Apache. Если ваш хостинг на Nginx — настройки делаются через панель управления или конфиги сервера (обычно нет доступа на виртуальном хостинге). 95% российских виртуальных хостингов используют Apache или Nginx + Apache, где .htaccess работает.
Как создать .htaccess
- В текстовом редакторе (VS Code, Sublime, Notepad++) создаёте новый файл.
- Сохраняете как
.htaccess(с точкой в начале, без расширения). - Если редактор не даёт сохранить с точкой — сохраните как
htaccess.txt, потом переименуйте. - Загружаете через FTP в корень сайта (рядом с index.html).
На некоторых FTP-клиентах файлы с точкой скрыты. В FileZilla: Сервер → Принудительно показывать скрытые файлы.
1. Принудительное HTTPS
Все запросы по http:// автоматически перенаправляются на https://.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
2. Редирект с www на без www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Наоборот, с без www на www:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
3. Кастомная страница 404
ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
ErrorDocument 500 /500.html
4. Gzip-сжатие
Уменьшает размер передаваемых файлов в 2-5 раз, ускоряет сайт.
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
5. Кэширование статики
Браузер запоминает картинки, CSS, JS, не запрашивает повторно — мгновенная загрузка при повторных визитах.
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType font/woff "access plus 1 year"
ExpiresDefault "access plus 2 days"
</IfModule>
6. Защита от хотлинков
Запрещает другим сайтам встраивать ваши картинки. Экономит трафик хостинга.
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.ru [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp)$ - [F]
7. 301 редирект отдельных страниц
Когда страница переехала или удалена, перенаправьте на новый адрес — сохранится поисковый трафик.
Redirect 301 /old-page.html https://yourdomain.ru/new-page.html
Redirect 301 /old-folder/ https://yourdomain.ru/new-folder/
8. Защита папки паролем
Полезно для админ-разделов или версий в разработке.
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /полный/путь/к/.htpasswd
Require valid-user
Файл .htpasswd содержит логин:зашифрованный_пароль. Генератор паролей — htaccesstools.com/htpasswd-generator/.
9. Блокировка/разрешение по IP
Заблокировать конкретный IP:
Require all granted
Require not ip 192.0.2.10
Require not ip 198.51.100.0/24
Разрешить только определённые IP (для админки):
Require ip 192.0.2.10
Require ip 198.51.100.0/24
10. ЧПУ — убрать .html из URL
Превращает yourdomain.ru/about.html в yourdomain.ru/about.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^([^.]+)$ $1.html [L]
# И редирект со старых URL с .html
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R=301,L]
Частые ошибки
- 500 Internal Server Error. Чаще всего — синтаксическая ошибка в .htaccess. Проверьте последние изменения, временно закомментируйте подозрительные строки через #.
- Правила не применяются. Модуль не включён на хостинге (mod_rewrite, mod_expires). Свяжитесь с поддержкой.
- Цикличный редирект. Условия конфликтуют, страница перенаправляется в кольце. Проверьте все правила редиректов.
- Тяжёлые правила замедляют сайт. Сотни RewriteRule создают нагрузку. Оптимизируйте.
- Файл загружен с расширением .txt. Должен называться строго .htaccess без расширения.
- Кодировка не UTF-8. Используйте UTF-8 без BOM, иначе возможны проблемы.
FAQ
На Apache и Apache+Nginx (95% российских виртуальных хостингов). На чистом Nginx — не работает, настройки делаются через панель управления.
Да. Каждый файл действует на свою папку и её подпапки. Правила в подпапке могут перекрывать правила в корневой.
Косвенно — по эффектам: редиректы работают, страница 404 кастомная, файлы кэшируются. Проверка кэша/сжатия — через DevTools → Network → выбрать файл → Headers.
1) Проверьте, что AllowOverride включён в конфиге Apache (обычно по умолчанию). 2) Проверьте права файла (644). 3) Проверьте имя файла (точно ли .htaccess). 4) Свяжитесь с техподдержкой хостинга.
Сами правила лёгкие. Но Apache читает .htaccess при каждом запросе. Для очень нагруженных сайтов лучше переносить настройки в основной конфиг сервера (требует VPS).
Сначала используйте R=302 (временный редирект) — поисковики его не запоминают. После проверки замените на R=301 (постоянный).
Заключение
.htaccess — один из самых полезных инструментов для управления статичным сайтом без программирования. 10 рецептов из этой статьи закрывают 90% задач: безопасность, скорость, SEO, удобство. Скопируйте нужное в свой файл — и сайт станет лучше за минуты работы.
Если ваш хостинг не поддерживает .htaccess или работает с ним нестабильно — пора менять. Подборщик хостингов Zettabyte поможет найти провайдера с правильной настройкой Apache. А готовые HTML-шаблоны часто идут с базовым .htaccess в комплекте.