'.htaccess' — файл конфигурации Apache на уровне папки. Размещается в корне сайта и меняет множество настроек без перезапуска сервера: перенаправления, безопасность, кэш, красивые URL. В Nginx его нет (конфиг только у админа), но на shared-хостинге Apache доминирует.
Принудительное перенаправление на HTTPS
Самое первое правило. Переводит все HTTP-запросы на HTTPS:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Убрать www (или добавить)
Перенаправление на версию без www (предотвращает дубли):
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
301 redirect (старая → новая)
Сохранение старых адресов при обновлении сайта:
Redirect 301 /old-page.html https://sayt.uz/new-page
Очень важно для SEO — передаёт силу старой страницы новой.
Красивые URL (скрыть .php)
Показывать /blog вместо blog.php:
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]
Кастомные страницы ошибок
ErrorDocument 404 /404.php
ErrorDocument 403 /403.php
Защита файлов
Запрет доступа к секретным файлам:
<Files ".env">
Require all denied
</Files>
Gzip-сжатие (скорость)
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>
Кэш браузера
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/webp "access plus 1 month"
</IfModule>
Защита от хотлинка
Не даёт другим сайтам использовать ваши картинки на своих страницах, поедая трафик.
Осторожно
1) Ошибка синтаксиса роняет весь сайт (500 error). Сначала бэкап. 2) После каждого правила проверяйте сайт. 3) Порядок RewriteRule важен.
Опыт Сайт.uz
На Сайт.uz в '.htaccess' настроены HTTPS, скрытие .php, страница 404, gzip и кэш. Секретные файлы защищены.