- Основные директивы .htaccess
- 1. Управление доступом
- 2. Перенаправления (Redirects & Rewrite)
- Простое перенаправление (301 Redirect)
- Перезапись URL (Rewrite Rules)
- Пример ЧПУ (Человеко-Понятные URL)
- 3. Защита файлов и папок
- Запрет на просмотр содержимого папки
- Запрет доступа к определённым файлам
- 4. Кеширование и сжатие (оптимизация скорости)
- Сжатие Gzip
- Кеширование файлов
- 5. Установка главной страницы
- 6. Изменение PHP-настроек
- 7. Canonical URL (Принудительное использование HTTPS)
- 8. Защита от хотлинкинга
- Заключение
Файл .htaccess
— это конфигурационный файл для веб-сервера Apache, который управляет настройками доступа, перенаправлений, защиты и других параметров без изменения основного файла конфигурации Apache (httpd.conf
).
Он используется в отдельных директориях и распространяет настройки на все вложенные папки.
Основные директивы .htaccess
1. Управление доступом
Ограничение доступа по IP:
Order Deny,Allow
Deny from all
Allow from 192.168.1.100
🔹 Deny from all — запретить всем.
🔹 Allow from 192.168.1.100 — разрешить только IP 192.168.1.100
.
Ограничение доступа по паролю (используется с .htpasswd
):
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /var/www/.htpasswd
Require valid-user
🔹 AuthType Basic — базовая аутентификация.
🔹 AuthUserFile — путь к файлу с логинами и паролями.
🔹 Require valid-user — разрешить доступ только авторизованным пользователям.
2. Перенаправления (Redirects & Rewrite)
Простое перенаправление (301 Redirect)
Redirect 301 /old-page.html https://example.com/new-page.html
🔹 Перенаправляет old-page.html
на new-page.html
с кодом 301 (постоянное перенаправление).
Перезапись URL (Rewrite Rules)
RewriteEngine On
RewriteRule ^oldpage$ /newpage [R=301,L]
🔹 RewriteEngine On — включает модуль перезаписи.
🔹 RewriteRule — правило переписывания URL:
— ^oldpage$
— если URL содержит oldpage
,
— /newpage
— перенаправить на /newpage
,
— [R=301,L]
— выполнить редирект 301 и остановить правила (L
= Last).
Пример ЧПУ (Человеко-Понятные URL)
RewriteRule ^product/([0-9]+)/?product.php?id=1 [L,QSA]
🔹 URL /product/123/
превращается в product.php?id=123
.
🔹 [QSA]
— сохраняет параметры запроса.
3. Защита файлов и папок
Запрет на просмотр содержимого папки
Options -Indexes
🔹 Отключает автоиндексацию файлов в директории (защита от просмотра).
Запрет доступа к определённым файлам
<FilesMatch "\.(htaccess|htpasswd|ini|log|sh)$">
Order Allow,Deny
Deny from all
</FilesMatch>
🔹 Блокирует доступ к .htaccess
, .htpasswd
, .ini
, .log
, .sh
и другим файлам.
4. Кеширование и сжатие (оптимизация скорости)
Сжатие Gzip
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>
🔹 Включает сжатие Gzip для HTML, CSS, JS и XML.
Кеширование файлов
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
</IfModule>
🔹 Устанавливает кеш для изображений (1 месяц), CSS и JS (1 неделя).
5. Установка главной страницы
DirectoryIndex index.php index.html home.html
🔹 Если есть index.php
, загрузится он, иначе index.html
, иначе home.html
.
6. Изменение PHP-настроек
Если у вас есть доступ к файлу .htaccess
, но нет доступа к php.ini
, можно изменять PHP-настройки:
php_value upload_max_filesize 10M
php_value post_max_size 10M
php_value memory_limit 256M
php_value max_execution_time 60
🔹 Ограничивает загрузку файлов 10 МБ.
🔹 Устанавливает лимит памяти 256 МБ.
🔹 Ограничивает время выполнения скриптов 60 секунд.
7. Canonical URL (Принудительное использование HTTPS)
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
🔹 Принудительно включает HTTPS.
8. Защита от хотлинкинга
Запрещает встраивание изображений на другие сайты:
RewriteCond %{HTTP_REFERER} !^RewriteCond %{HTTP_REFERER} !^https://(www\.)?example\.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif) - [F]
🔹 Блокирует запросы на картинки с других сайтов.
Заключение
Файл .htaccess
— мощный инструмент, который позволяет:
✅ Настраивать доступ.
✅ Создавать редиректы.
✅ Оптимизировать кеширование.
✅ Повышать безопасность.