Изучаем, как создать .htaccess, какую роль он выполняет и как его настроить.
.htaccess что это
Всё, что вы видите на сайтах в интернете, находится на серверах — специальных компьютерах, которые хранят и в автоматическом режиме обрабатывают запросы пользователей.
Каждый сервер, как сейф: хранит данные в безопасности, работает двадцать четыре часа в сутки, семь дней в неделю.
Один из таких веб-серверов — это Apache. Он бесплатный, поддерживает PHP и другие языки программирования, его легко настраивать и использовать, поэтому Apache очень популярен.
Настройки любого сервера хранятся в главных конфигурационных файлах. В них прописывают команды, которые изменяют поведение веб-приложений и сайтов, не внося правок в код.
Но не у всех владельцев веб-сайта есть к ним доступ: некоторые пользуются хостингом.
Хостинг — это уже не сейф, а целый банк со множеством ячеек. Вы можете арендовать в банке сейф, но вряд ли сможете выкупить целый банк. Поэтому вы, конечно, получите код от своей ячейки, а вот ключи ко всей системе безопасности банк не отдаст.
Представьте, что вы — владелец небольшого сайта и платите за хостинг. Это значит, что на том же самом сервере хостятся еще несколько сайтов других людей. Хостер — владелец сервера — не даст вам доступ к конфигурации сервера.
Но изменения всё равно вносить надо: настройки сайта определяют, насколько он безопасный, как быстро работает и даже — есть ли к нему доступ. Без доступа к настройкам нельзя перенаправить пользователей с одной страницы на другую или защитить сайт от злоумышленников.
Файл .htaccess как раз нужен, чтобы вносить изменения в настройки своего сайта без доступа к главной конфигурации сервера.
Зачем он нужен
С помощью .htaccess можно:
- изменить настройки для отдельных папок и подпапок;
- закрыть доступ к файлам или установить пароль на файл или папку;
- настроить переадресацию;
- изменить структуру URL;
- включить сжатие данных, чтобы сайт быстрее грузился;
- ограничить доступ по IP;
- управлять кодировкой сайта.
Без этого файла многие настройки пришлось бы делать через панель хостинга или вручную в конфигурационных файлах сервера.
Это похоже на универсальный пульт управления системой «умного дома», когда вы можете закрыть ставни, включить свет или поменять температуру в одной комнате и никак не влияете на остальной дом.
Синтаксис .htaccess
Синтаксис файла простой и понятный. Запомните несколько правил и проверяйте код через валидаторы, чтобы ошибки не поломали сайт.
Правило № 1. Каждая директива пишется с новой строки
Директивы — это команды, которые настраивают поведение сервера. Каждую директиву нужно писать на новой строке.
Например, если вы хотите перенаправлять пользователя с одной страницы на другую и установить кэширование, команды должны быть на двух разных строках.
Redirect /old-page.html /new-page.html
ExpiresActive On
Представьте, что вы выключаете свет и включаете музыку — это разные команды. Их нужно произносить отдельно, чтобы не путать систему: она начнет выполнять новую команду, когда закончит предыдущую.
Правило № 2. Комментарии начинаются с символа #
Чтобы добавить комментарий, начните строку с «#». Комментарии подскажут разработчикам, что делает та или иная часть файла. Сервер будет игнорировать строки с комментариями.
# Перенаправление со старой страницы на новую
Redirect /old-page.html /new-page.html
Правило № 3. Чувствительность к регистру зависит от директивы
Если директива чувствительна к регистру, значит, она понимает, когда команда написана с заглавной буквы. Или если одна из букв внутри — заглавная. При этом директива не понимает, что вы могли написать команду с заглавной буквы случайно, и правильно команду не выполнит.
Некоторые директивы чувствительны к регистру, но большинство — нет. Проверяйте документацию, чтобы знать наверняка.
Пример: директиву redirect можно писать с заглавной буквы или с маленькой — она нечувствительна к регистру.
Redirect /old-page.html /new-page.html
redirect /old-page.html /new-page.html
Даже если сами директивы нечувствительны к регистру, параметры внутри них могут быть чувствительны. Например, в директиве RewriteRule регистр имеет значение, если вы используете регулярные выражения.
RewriteEngine On
RewriteRule ^Page$ /different-page.html [L] # сработает только для /Page
RewriteRule ^page$ /another-page.html [L] # сработает только для /page
Эти правила распространяются только на файл .htaccess. Сами сайты написаны другими языками с более сложным синтаксисом: HTML, CSS, JavaScript. Если вы хотите научиться работать с ними, поступайте на курс «Веб-разработчик».
.htaccess где находится
Файл лежит в корне сайта (папка public_html, www или htdocs). Он скрытый. Включите отображение скрытых файлов в файловом менеджере, чтобы его увидеть.
Как создать htaccess
Создать файл с нуля очень просто: для этого подойдет любой текстовый редактор. Хотя лучше использовать Notepad++ и Sublime Text.
- Откройте текстовый редактор.
- Напишите нужные настройки.
- Сохраните файл с именем .htaccess. Без расширения. Для этого в Windows нужно указать тип файла «Все файлы», чтобы не добавилось расширение .txt.
- Загрузите его на сервер через FTP или файловый менеджер.
Как настроить htaccess
Сначала подключитесь к серверу через FTP/SFTP-клиент. Затем найдите файл в корневой папке сайта (часто это /public_html, /www или /htdocs).
Скачайте файл и откройте в текстовом редакторе (Notepad++, Sublime Text, VS Code). Не используйте обычный Notepad (Блокнот) — он поломает кодировку файла.
Если у вас есть панель управления хостингом (cPanel, ISPManager) — найдите раздел «Файловый менеджер». В нём откройте основную папку сайта, найдите файла .htaccess и нажмите «Редактировать».
Как настроить файл
Очень просто — следуйте инструкции.
Главная страница по умолчанию
Если вы зайдете в папку на сервере, Apache покажет список всех файлов (как в проводнике Windows). Такая настройка установлена по умолчанию, но это небезопасно.
Вместо этого укажите, какой файл открывать, когда кто-то заходит в папку сайта.
Например:
DirectoryIndex index.php index.html
Теперь сервер откроет файл index.php, а если его нет, покажет index.html. Всегда ставьте «главный» файл первым: так проще работать с ним.
Файл выполняет ту же функцию, что схема ТЦ или схема офиса на входе: помогает сориентироваться тем, кто только что оказался в помещении и не знает, куда идти.
Редиректы
Представьте: вы переименовали страницу «О нас» с about.html на about-us.html. Посетители, которые сохранили старую ссылку, никуда не попадут по ней.
Редирект решит эту проблему. Он похож на автоисправление адреса в приложении с картами: если вы введете старое название улицы, вам наверняка предложат ее корректный новый вариант.
Вот как выглядит редирект:
Redirect 301 /about.html /about-us.html
301 — код «страница перемещена навсегда». Это важно для SEO: поисковики обновят ссылки в выдаче.
Есть и более сложный вариант:
RewriteEngine On
RewriteRule ^old-about$ /about-us [R=301,L]
Если в адресе есть old-about (например, site.com/old-about), пользователь автоматически перейдёт на site.com/about-us.
Базовая аутентификация
Допустим, у вас есть папка /admin с настройками сайта. Чтобы ее защитить:
- Создайте файл .htpasswd через онлайн-генератор. В нём будут логин и пароль.
- Добавьте в .htaccess:
AuthType Basic
AuthName "Требуется пароль"
AuthUserFile /полный/путь/до/.htpasswd
Require valid-user
:
Если положить этот код в папку /admin, при попытке зайти в нее браузер покажет окно ввода пароля.
Страницы ошибок
Страница 404 Not Found — всё равно что записка «ушла на обед до 15:00» от продавца в ларьке. Покупатель всё равно недоволен, что не может ничего купить, но хотя бы понимает почему. И не будет ждать, если на часах сейчас 14:00.
Так и в интернете: страница 404 сообщает: страницы, которую искал пользователь, нет. Но стандартная страница «404 Not Found» выглядит скучно. Гораздо лучше, если она:
- проговаривает простым человеческим языком, что страницы не существует;
- предлагает вернуться на главную сайта;
- показывает, как воспользоваться поиском по сайту.
Тогда и процент уходов с сайта падает.
Например, Т-Банк использует эту страницу, чтобы еще раз направить пользователя к своим продуктам:
Страница 404 может выглядеть очень просто, но всё равно с ее помощью можно общаться с посетителем понятно и непринужденно:
А тут и вовсе всё понятно без слов:
Создайте свою страницу 404, чтобы удержать посетителей:
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/oops.html
Замена протокола HTTP на HTTPS
Представьте: вы живете в Древней Греции. Вам нужно передать послание соседу. Проще простого: пишете его на папирусе и отдаете гонцу. А если послание — не соседу, а другу из другого города и информация очень важная?
Тогда ее нужно зашифровать. В древности для этого использовали рукописные шифры. В интернете используют шифрованный трафик.
Без HTTPS данные пользователей (пароли, платежи) передаются в открытом виде. Переведите весь трафик на защищенное соединение:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Если пользователь введет http://site.com, его автоматически перебросит на https://site.com.
Про само шифрование подробно рассказали тут.
Ограничение доступов
Заметили, что с IP 185.100.85.2 постоянно приходит спам? Запретите доступ:
Order deny,allow
Deny from 185.100.85.2
Allow from all
К сожалению, это не панацея — злоумышленники могут использовать VPN и обходить этот запрет. Но для блокировки конкретных ботов подойдет.
Ограничение запросов
Ограничение запросов может спасти сайт от DDoS-атак. Если его атакуют, модуль mod_evasive заблокирует подозрительные запросы:
DOSPageCount 2 # Максимум 2 запроса в секунду на одну страницу
DOSSiteCount 50 # Не более 50 запросов в секунду на весь сайт
DOSBlockingPeriod 10 # Блокировать на 10 секунд при нарушении
Кодировка
Все буквы и цифры для компьютера обозначаются числовыми значениями. Система, по которой зашифрованы буквы и цифры в числа, называется кодировкой.
Кодировки есть разные. Так что если вы откроете или сохраните файл не в той кодировке, что нужна, — можете его поломать. Файл .htaccess использует кодировку UTF-8.
Так что если вместо слова «Привет» вы видите «ÐŸÑ€Ð¸Ð²ÐµÑ‚», добавьте:
AddDefaultCharset UTF-8
Общие советы
Все настройки можно собирать в одном файле:
# Главная страница
DirectoryIndex index.php
# Кастомные страницы ошибок
ErrorDocument 404 /404.html
# Переход на HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Защита админки
<Files "admin.php">
AuthType Basic
AuthName "Только для админов"
AuthUserFile /home/user/.htpasswd
Require valid-user
Всегда делайте резервную копию .htaccess перед правкой — одна ошибка может «положить» сайт. Проверяйте код через валидатор.
Не усложняйте содержимое файла без нужды — каждое правило замедляет обработку запросов.
Хотите узнать больше про настройку и создание сайтов? Поступайте на курс «Веб-разработчик». Эксперты в области разработки сайтов научат вас работать с HTML, CSS и Java Script руками, а также собирать сайты в известных блочных конструкторах.
Главное
- Файл .htaccess открывает доступ к настройкам сервера, когда нет доступа к главной его конфигурации: при использовании общего хостинга и ограниченных правах.
- Этот файл дает инструменты для редиректов, управления доступом, изменения URL и включения сжатия. Сайт лучше защищен и быстрее работает, если он грамотно настроен.
- Синтаксис .htaccess прост: нужно писать каждую директиву с новой строки и использовать «#» для комментариев. Правила регистра зависят от типа директивы.
- Файл лежит в корне сайта, но его не видно без отображения скрытых файлов. Редактирование в Notepad++ или Sublime Text исключает проблемы с кодировкой.
- .htaccess позволяет выбирать главную страницу, включать HTTPS, ограничивать доступ по IP и задавать собственные ошибки. Эти настройки нужны для стабильной работы и защиты сайта.
- Перед изменением .htaccess нужно создавать резервные копии и проверять код в валидаторе. Небольшая ошибка может положить весь сайт.
Добавить комментарий