.htaccess что это
.htaccess - это файл, который позволяет задать настройки для веб-сервера Apache.
Однако не все так просто. У файла .htaccess есть "старший брат" под названием httpd.conf. В чем его особенность? В том, что он позволяет получить полный доступ к настройкам сервера, можно сказать, что .htaccess является частным случаем httpd.conf
Представьте, что сейчас на сервере Apache находится, скажем, 10 сайтов и кто-то из разработчиков получил доступ к файлу httpd.conf. Он что-то там поменял, и все сайты сразу перестали работать. Чтобы такого не произошло, и был придуман файл .htaccess, который позволяет каждому разработчику изменять настройки только СВОЕГО сайта.
Зачем нужен .htaccess
Файл .htaccess чаще всего используется для:
- изменения настроек для главных папок и подпапок;
- закрытия доступа к некоторым файлам и папкам или установления пароля для них;
- настройки переадресации;
- изменения структуры урла (URL);
- активации функции сжатия данных (для более быстрой загрузки страниц сайта);
- задания кодировки сайта (например, utf-8) и т.д.
Как видите этот файл позволяет делать многое. Не будь его, нам пришлось бы изменять настройки сервера вручную через файл httpd.conf, а это, как уже указывалось выше, может быть чревато.
Полный список настроек можно найти на официальном сайте Apache.
Создание и редактирование .htaccess
Для создания файла .htaccess необходимо:
- выбрать пункт "Файловый менеджер";
- нажать на кнопку "Создать файл";
- ввести имя файла ".htaccess";
- нажать на кнопку "Создать".
Важно! Название файла нужно вводить с "точкой" в самом начале. В противном случае его нельзя будет считать конфигурационным.
Редактировать файл можно либо через встроенный функционал хостинга, либо с помощью внешних редакторов кода (например подключение к файлам сайта по SFTP). В первом случае достаточно сделать двойной щелчок левой кнопкой мыши по файлу, внести необходимые изменения и нажать кнопку "Сохранить". Второй способ отличается от первого лишь тем, что здесь для сохранения изменений используется сочетание клавиш ctrl+s.
.htaccess где находится
Файл находится в корневой папке сайта (ее еще называют корнем сайта). В разных системах она может называться по-разному: public_html, www и т.д. Изначально файл может быть скрытым, чтобы его увидеть, необходимо включить отображение скрытых файлов в файловом менеджере.
Главная страница по умолчанию
Главная страница сайта может быть задана с помощью директивы DirectoryIndex. Давайте рассмотрим конкретный пример:
DirectoryIndex index.html
Т.е. здесь мы прямо указываем на то, какая страница будет считаться главной для всего сайта.
А что если страницы index.html больше не существует, но вместо нее была создана страница index.php? В таком случае мы можем перенаправить пользователя с одной главной страницы на другую. Делается это так:
DirectoryIndex index.html index.php
Т.е. мы просто добавляем через пробел к нашей изначальной директиве еще одну страницу. Если и она вдруг каким-то чудом окажется недоступной, к этой цепочке добавляется третий вариант страницы и т.д.
Редиректы
Если сказать просто и понятно, редирект - это перенаправление с одного url-адреса на другой. Давайте рассмотрим пример с тремя директивами: RewriteEngine, RewriteCond, RewriteRule
RewriteEngine On
RewriteCond %{HTTP_HOST} old-domain.ru
RewriteRule (.*) http://new-domain.ru/$1 [R=301,L]
Разберем каждую из них:
RewriteEngine отвечает за активацию специального модуля mod_rewrite для перезаписи URL.
RewriteCond задает условие, при соблюдении которого будет выполнен редирект.
RewriteRule - собственно перенаправление с одного url-адреса на другой. В данном случае с old-domain.ru на new-domain.ru
Базовая аутентификация
Допустим, нам надо запаролить админку нашего сайта. Для этого сначала в корне сайта создаем файл под названием ".htpasswd" и закидываем в него данные для входа в захешированном виде. Затем открываем файл .htaccess и прописываем в нем следующие строки:
<Files wp-login.php>
AuthType Basic
AuthName "X Zone"
AuthUserFile полный-путь-до-файла-с-паролями/.htpasswd
Require valid-user
</Files>
Т.е. мы как бы связываем один конфигурационный файл с другим и говорим, что на данную страницу могут зайти только авторизованные пользователи.
Вот отличный генератор .htpasswd
Страницы ошибок
Предположим, мы создали свою страницу 404, потому что стандартная кажется нам слишком скучной. Для того чтобы показать пользователю именно ее, необходимо использовать директиву ErrorDocument:
ErrorDocument 404 /404.html
Важно! Страница 404 должна лежать в той же папке что и файл .htaccess
Замена протокола HTTP на HTTPS
Сейчас все уважающие себя сайты передают данные по протоколу HTTPS. Однако, как и везде, встречаются исключения. Для того чтобы сменить старый протокол на новый, используется следующий ряд инструкций:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Конструкция похожа на ту что мы видели выше. Суть ее в том, что если пользователь вводит адрес сайта с "http", его перенаправит на тот же самый сайт, но уже с "https".
Ограничение доступов
Благодаря этой настройке мы можем блокировать доступ для конкретного IP-адреса (директивы deny и allow). Особенно эффективно для разного рода ботов. Пример:
Order deny, allow
Deny from 185.100.85.2
Allow from all
Также можно воспользоваться новой директивой Require. Давайте запретим доступ некоторым IP и разрешим всем остальным:
<RequireAll>
# блокируем IPv4
Require not ip 1.1.1.1.1
# блокируем IPv6
Require not ip 1:2:3:4:5:6:7:8:9
Require all granted
</RequireAll>
В данном случае мы запретили доступ для ip 1.1.1.1.1 и ip 1:2:3:4:5:6:7:8:9.
К сожалению, данную настройку нельзя считать максимально надежной. Злоумышленники могут воспользоваться VPN и зайти под другим IP.
Ограничение запросов
С помощью ограничения запросов мы можем задать частоту обращений к конкретным страницам или даже ко всему сайту (особенно эффективно при DDoS-атаках):
DOSPageCount 3 # Не более 3 запросов в секунду на страницу
DOSSiteCount 40 # Не более 40 запросов в секунду на весь сайт
DOSBlockingPeriod 15 # Блокировка сайта на 15 секунд при нарушении правил
Кодировка
Кодировку для всего сайта можно задать одной короткой строчкой:
AddDefaultCharset utf-8
В данном случае мы используем по умолчанию кодировку utf-8
Что запомнить
Сделаем небольшое резюме из всего вышесказанного:
- Файл .htaccess позволяет задать настройки для веб-сервера Apache не затрагивая при этом главный конфигурационный файл httpd.conf
- Изначально файл может быть скрытым, чтобы с ним работать нужно включить его отображение.
- Он должен находиться в корне сайта, его действие распространяется на все подпапки.
- Каждая директива пишется с новой строки, комментарии начинаются с символа #
- Перед каким-либо изменением данного файла необходимо сделать резервную копию сайта.
- .htaccess позволяет устанавливать главную страницу сайта, делать редиректы, включать протокол https, задавать кодировку для сайта и т.д.
- Для редактирования файла лучше всего использовать консоль или текстовый редактор Notepad++.
#файл_htaccess #htaccess_редирект #htaccess_настройка #apache_htaccess
СПАСИБО ЗА ВНИМАНИЕ!
ПОДПИСЫВАЙСЯ на канал чтобы не пропустить выход новых интересных статей и видео!👍👍👍✍
Также советую ПОДПИСАТЬСЯ на мой youtube🔴 канал:
RuTube🎥:
Telegram🤘:
VK👇: