Что такое .htaccess
.htaccess (с точкой в начале имени) – это файл, который дает возможность управлять сервером в пределах вашего хостинг-аккаунта. Если создать файл .htaccess в корневом каталоге аккаунта, то под его управление попадёт весь аккаунт. Также можно создавать его в любых папках корневого каталога(кроме cgi-bin) и управлять содержимым этих папок, каждой в отдельности.
Изменения, вносимые в файлы .htaccess, вступают в силу немедленно и не требуют перезагрузки сервера.
Синтаксис .htaccess
Пути к файлам и директориям должны указываться от корня сервера, например, /pub/home/server1/html/
В именах доменов обязательно должны быть указаны протоколы (http).
Как создать .htaccess файл?
Создать файл можно в обычном Блокноте (Notepad). Запишите все нужные строки и потом нажмите на «Сохранить Как» («Save As)», нужно выбрать тип файла «Все Файлы» *.* («All Files» *.*) и в поле «Имя файла» написать .htaccess (с точкой!). Если это сделать не возможно, сохраните файл просто как .htaccess.txt, а после загрузки по FTP, измените имя на .htaccess с помощью FTP-клиента.
Для чего используется .htaccess?
- Авторизация и аутентификация – файлы .htaccess используются для создания ограничений для конкретной директории.
- Собственные страницы ошибок– изменение страниц, которые отдаются при ошибках на стороне сервера.
- Изменение URL-адресов – .htaccess используют для изменения излишне сложных URL-адресов на легко запоминающиеся.
- Контроль кеша – .htaccess позволяют серверу контролировать кеширование сайта web-браузерами для уменьшения использования канала и загрузки сервера.
Основные правила .htaccess
Редирект http -> https
RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Альтернативным способом может быть настройка редиректа средствами панели управления. Подробнее по ссылке
Редирект http с www -> https без www
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Редирект между двумя разными доменами
RewriteEngine On
RewriteCond %{HTTP_HOST} domain1.com
RewriteRule (.*) http://domain2.com/$1 [R=301,L]
где domain1.com — домен, с которого осуществляется редирект, а domain2.com — домен, на который осуществляется редирект
Редирект с каждой страницы одного домена на главную другого
RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/ [L,R=301]
Редирект с каждой страницы одного домена на такой же адрес другого
RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://domain2.com/$1 [L,R=301]
где domain2.com — адрес домена, на который вы хотите осуществить редирект.
Редирект на 403 при заходе на сайт
Order deny,allow Deny from all
Блокировать один или несколько IP
Order deny,allow allow from all deny from IP1 deny from IP2
где вместо IP1 и IP2 нужно указать значения IP-адресов, для которых вы хотите закрыть доступ к сайту.
Блокировать ботов
RewriteEngine on RewriteBase / RewriteCond %{HTTP_USER_AGENT} ^.*(Bot01|Bot02).*$ [NC] RewriteRule . - [F,L]
где вместо Bot01, Bot02 необходимо указать реального юзер-агента. Через символ «|», можно написать сколько угодно юзер-агентов, например:
RewriteEngine on RewriteCond %{HTTP_USER_AGENT} ^.*(AhrefsBot|AspiegelBotBaiduspider|bingbot|binance).*$ [NC] RewriteRule . - [F,L]
Включение gzip сжатия при помощи .htaccess
Стандартный набор правил, при необходимости можно изменять под свои потребности
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/css application/json text/xml application/xml text/x-component text/javascript application/javascript application/x-javascript </IfModule>
Включение cache при помощи .htaccess
Такой вариант подойдет, если вы хотите, чтобы браузер посетителя кешировал необходимые файлы вашего сайта и не запрашивал их каждый раз, создавая таким образом нагрузку на сайт при последующих посещениях.
<ifModule mod_expires.c> ExpiresActive On #по умолчанию кеш в 5 секунд ExpiresDefault "access plus 5 seconds" #далее для отдельных файлов задается отдельное время кеширования #кэшировать флэш и изображения на 30 дней ExpiresByType image/x-icon "access plus 2592000 seconds" ExpiresByType image/jpeg "access plus 2592000 seconds" ExpiresByType image/png "access plus 2592000 seconds" ExpiresByType image/gif "access plus 2592000 seconds" ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" #кэшировать css, javascript и текстовые файлы на 7 дней ExpiresByType text/css "access plus 604800 seconds" ExpiresByType text/javascript "access plus 604800 seconds" ExpiresByType application/javascript "access plus 604800 seconds" ExpiresByType application/x-javascript "access plus 604800 seconds" #кэшировать html и htm файлы на один день ExpiresByType text/html "access plus 43200 seconds" #кэшировать xml файлы на десять минут ExpiresByType application/xhtml+xml "access plus 600 seconds" </ifModule>