Зачем нужен .htaccess и где его искать
С помощью .htaccess можно прописывать изменения, не имея прав администратора. Конфигурация сервера при этом остается в безопасности. Если внести изменения в файл, они применяются для всего каталога, в котором он расположен. Чтобы изменения применились на весь сайт, следует поместить файл в корень сайта. Используя возможности файла .htaccess возможно:
- Делать редиректы.
- Настраивать кэширование.
- Сформировать правильные ЧПУ.
- Вносить правки в код.
- Управлять доступами IP-адресов.
- Настраивать другие директивы.
Редко бывает, что файл не создан. В большинстве случаев, его просто не могут найти. Сложность заключается в том, что этот документ скрыт от пользователей, потому что отличается отсутствием названия, но при этом имеет расширение в виде названия из слова.
Синтаксис .htaccess и кодировка
Синтаксис .htaccess достаточно простой для понимания технического специалиста. Все директивы или команды начинаются с новой строчки. При необходимости закомментить строку, но чтобы это не учитывал сервер, нужно добавить решетку #. Чтобы понимать кодирование файла, следует разобраться в спецсимволах:
- возведение в степень ^ обозначает начало строки;
- знак доллар $ — это конец строки;
- цифры в скобках от нуля до девяти [0-9] являются последовательностью символов;
- точка . обозначает любой символ;
- вопросительный знак ? характерен для одного определенного символа;
- звездочка * — любое количество различных символов;
- две круглые скобки () показывают выбор групп символов;
- большой разделитель | обозначается как “или”, то есть эта группа или другая.
Также в файле .htaccess существуют переменные:
- %{QUERY_STRING} — параметры запроса после вопросительного знака;
- %{HTTP_USER_AGENT} — передает браузер пользователя;
- %{REQUEST_URI} — запрашиваемый URI;
- %{REMOTE_ADDR} — пользовательский IP.
Создание и редактирование .htaccess
Если вы взяли сайт на CMS в работу, то скорее всего .htaccess уже создан автоматически. Необходимо его найти и отредактировать. Для создания .htaccess на сайте с нуля, руководствуйтесь следующей инструкцией:
- Войдите в программу “Блокнот”
- Сохраните пустой файл.
- В строке Имя Файла введите название .htaccess.
- В строке Тип Файла выберите “Все файлы”
- Нажмите “Сохранить».
После того, как файл сохранен следует исправить его расширение, поскольку он будет носить название .htaccess.txt. Для этого нужно сделать ряд дополнительных действий. Войдите в проводник — вкладка Вид — Расширения имен файлов. Уберите галочку.
Залейте файл в корневую папку сайта. Только после этого вы можете начинать работать с настройками и прописывать нужные директивы. Для того чтобы отредактировать файл следует:
- Зайти в корневую папку сайта.
- Открыть файл .htaccess.
- Написать или скопировать нужную директиву.
- Сохранить.
Использование на хостинге файла .htaccess
Пользователи виртуального хостинга при настройке папок ограничены в правах доступа к файлам web-сервера Apache (httpd.conf). Редактировать httpd.conf могут только суперпользователи (root), то есть для этого необходимо быть владельцем VPS/VDS и выделенных серверов.
Для работы нового файла не требуется перезагружать сервер, но меняется автоматически. Если хостер посчитает, что .htaccess создает слишком высокую нагрузку на сервер или угрожает безопасности, то может изменить либо удалить файл.
Использование .htaccess на виртуальном или выделенном сервере
На выделенном сервере можно редактировать настройки самого сервера Apache, используя конфигурации файлов. Однако .htaccess в данном случае есть возможность корректировать работу сервера без перезагрузки. Чтобы изменить .htaccess из командной строки сервера, используйте текстовые редакторы vi, nano, mcedit.
Чтобы Apache смог применить файл .htaccess, следует прописать в конфигурации /etc/httpd/conf/httpd.conf или /etc/apache2/apache2.conf правильную для него директиву “AllowOverride All”.
Когда редактирование завершено, необходимо перезагрузить веб-сервер. При Syntax OK — выполните service httpd restart. Провайдеры по умолчанию включают эту настройку для папок с сайтами пользователей на виртуальном хостинге, а для VPS/VDS и выделенных серверов проверка осуществляется самостоятельно.
Перенаправления
Такая техническая работа проводится на сайте довольно часто, поскольку многие страницы уже не существуют, либо произошли существенные изменения в структуре сайта по многим другим причинам.
301 редирект
Распространенным редиректом является 301. Прописывать его придется в файле .htaccess для каждой страницы отдельно.
- /page1/ — URL страницы, которая будет перенаправлять. Например, /catalog/stoly/shcolnie/.
- https://mysite.com/page2/ — URL страницы перенаправления. Например, https://mysite.com/stoly/shcolnie/
Не стоит удалять страницу, даже если она выдает 404 ошибку. Так вы можете сохранить позиции и свой трафик.
Избавление от дублей
Чтобы одна страницы была доступна по одному адресу, как того требуют поисковые системы, для этого следует настроить редирект на те страницы, которые заканчиваются слешем / (либо наоборот, зависит от вашего предпочтения и количества уже проиндексированных страниц). Также должно быть настроено главное зеркало сайта т.е. всё, что будет идти после главного адреса (слеши, index.php и т.д.) должно отдавать на главную. Проще всего это сделать, установив модуль mod_rewrite.
Перенаправление со слешем / и без
Чтобы узнать, существуют ли на сайте дубли страниц со слешем, просто добавьте к любому url страницы слеш /. Если у вас версия со слешем, то уберите слеш. В первой ситуации при добавлении страница должна перезагрузиться с таким же адресом без слеша. Если этого не произошло, то вам нужно настраивать редиректы. Во втором случае ситуация аналогична, только наоборот.
Код 301 редиректа на слеш:
Код 301 редиректа на страницы без слеша:
Как запретить доступ к файлу, папке или всему сайту?
Способов запрета много. Наиболее популярные из них:
- Deny from all. Такая строчка означает полный запрет ко всем файлам. Конечно закрывать все файлы не имеет смысла, поэтому следует поместить .htaccess в папку с другими файлами, которые надо запретить. При настроенном запрете, будет отображаться
При ненастроенном
- Запрет для файла с определенным разрешением. Если нужно закрыть файл cfg или с иным разрешением, то используйте этот код
- Запрет к одному файлу . Осуществляется с помощью кода
Указание опций PHP
На виртуальном хостинге PHP работает как mod_php (настройки через .htaccess) и mod_cgi (настройки через php.ini). Поскольку нас интересует первый вариант, разберемся в настройке опций и их значений.
- apc.cache_by_default (помогает увеличить производительность за счет кеширование);
- default_charset (автоматическая кодировка по умолчанию utf-8, koi8-r, cp1251);
- log_errors (при указании пути к файлу замените u и user на первую букву вашего логина и сам логин);
- display_errors (вывод ошибок на экран пользователя или запрет на вывод ошибок);
- magic_quotes_gpc (процесс автоэкранирования входящих данных PHP-скрипта);
- mail.add_x_header (логирование отправки почты из скриптов сайта);
- max_input_vars (количество входящих переменных для одного запроса);
- mbstring.func_overload и mbstring.internal_encoding (необходима для функционирования сайта на старых версиях Bitrix);
- opcache.revalidate_freq (отключает OpCache в Bitrix);
- pcre.recursion_limit (можно указать лимит рекурсии);
- post_max_size (размер данных POST);
- register_globals (вкл./выкл.глобальные переменные);
- upload_max_filesize (размер файла, который можно закачать на сайт).
Изменение страниц ошибок с помощью .htaccess
При наличии страницы с ошибкой 404, 500 или 502 рекомендуется настраивать эти страницы для пользователей, которые будут иметь возможность перехода на рабочие страницы сайта.
Чтобы устранить эту проблему и сохранить показатели сайта в норме, следует создать эти страницы и добавить в .htaccess следующий код:
Настройки безопасности сайта через файл .htaccess
Защита сайта является важным нюансом, поскольку различные атаки и кража данных происходит ежечасно. Первым делом нужно защитить админпанель. Для этого подойдет базовая аутентификация.
Разрешение доступа админу
Для пользователя будет отображаться так
Этот способ является средним уровнем защиты.
Защитить сайт можно и от копипаста, который часто делают с помощью вставки Hotlink. Копирование изображений и текста не просто является плагиатом. Это еще значительно нагружает сервер.