для чего нужен htaccess файл
.htaccess позволяет создать собственную конфигурацию управлением сервера Апач в директориях или настройках хостинга.
Глобальные настройки сервера Апач могут содержать запрет на исполнение некоторых команд, обычно это вызывает ошибку 500. Также подобную ошибку может вызывать неправильный синтаксис или ошибка, например пропуск пробела.
Запрет доступа для определенных IP-адресов или диапазонов IP-адресов
Запрет доступа с IP-адреса 123.123.123.123.
Разрешаем доступ только с определенных IP-адресов
Принудительное задание кодировки
Иногда требуется очистка кэша браузера.
Отмена перекодировки сервером
Создание собственных страниц с сообщениями об ошибках
При переходе, например, на несуществующий адрес, посетитель увидит сообщение сервера об ошибке, можно создать собственные страницы ошибок либо перенаправлять посетителя на другой адрес, как главная страница. Но для правильной индексации желательно не перенаправлять, а показывать страницу ошибки.
Строка ErrorDocument 404 http://site.ru/error/404.html указывает, что при ошибке 404 будет показан файл 404.html, который должен находиться в корне директории сайта. Если файл расположен в другой директории, измените путь к файлу или ссылке.
Редиректы
Редирект на .html
Пример, редирект с c site.ru/blog на site.ru/blog.html.
Редирект на страницу без слеша в конце адреса
Пример, редирект с c site.ru/blog/ на site.ru/blog.
Редирект на страницу со слешем в конце адреса
Редирект на страницу без index.php в адресе
Редирект на страницу без index.php в конце адреса
Редирект с www на без www
Редирект без www на www
Склейка доменов
Пример, у вас несколько доменов, но посетитель должен переправляться на один.
Редирект со старых статических url на новые
Пример редирект со страницы http://site.com.ru/id=21.
Защита от хотлинка
Если вы хотите запретить вставку изображений с сайта по прямой ссылке.
Защита от брутофорса
Разрешаем доступ к директории administrator только по протоколу HTTP, что отсеет некоторых ботов. Для каждой CMS нужно указать свой адрес, например wp-login, wp-admin и так далее.
Бытует легенда, что происхождения названия сервера Апач происходит не от названия индейского племени. Когда сервер был еще в самом начале пути, группа энтузиастов небольшие дополнения к коду, патчи (англ – patch), и «a patchy server» превратилось в Апач, а знаменитое перо на логотипе появилось позже.
В материале перечислены наиболее часто используемые примеры, а большинство возможностей даже не упомянуто, как модуль mod_rewrite, предоставляющий множество возможностей.
Статья писалась эпизодическими «набегами», так что если увидите ошибку, поправьте.
[Disclaimer: Данная статья была переведена в рамках «Конкурса на лучший перевод статьи» на сервисе Quizful. Ссылка на оригинал находится внизу страницы.]
Введение
.htaccess файлы (или «распределенные конфигурационные файлы») позволяют задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т. д, без изменения главного конфигурационного файла.
Директивы
А в данном примере, включаем только аутентификацию и индексы :
AllowOverride AuthConfig Indexes
Комментарии
Первые строчки, выше приведенных примеров, это комментарии Apache. Комментарии начинаются с символа «#». Множество комментариев в примерах помогут Вам понять, что в них делается. Однако, они не обязательны, это сугубо индивидуально.
Если Вы сомневаетесь в синтаксисе директив, то смотрите их на Apache Directive, где каждая директива включает пункт «Syntax». Я могу сделать эту статью интереснее, но всегда самой лучшей документацией является документация официальная.
Способ 1
DirectoryIndex
Способ 2
AccessFileName
Отображение содержимого каталога
Директива Options
Базовая аутентификация (Basic Authentication)
Возможно, отключение листинга директорий это не то, что Вы хотите сделать. Наверно Вы хотите оставить листинг, но пускать на страницы только определенных пользователей сайта. Базовая аутентификация (Basic Authentication) может быть полезной в таком случае. Это основной тип аутентификации в интернете. Когда посетитель пытается получить доступ к странице, он видит диалоговое окно Пользователь/Пароль. Только нужные пользователи смогут получить доступ.
Для базовой аутентификации необходимы два шага:
Обычно, файл с паролями разработчики называют «.htpasswd». Это так, потому что команда, которая генерирует шифрованную пару пользователь/пароль, называется htpasswd. Если Вы владеете этой командой, то Вам не составит труда создать новую пару. В противном случае можете воспользоваться онлайн сервисом, который просто выдаст сгенерированный текст в окно браузера.
Если Вы все сделали правильно, то увидите диалоговое окно аутентификации:
Базовая аутентификация хороша и проста, но это не полное решение. Пароли браузер отправляет Base64 кодированными и в режиме «plain text». Если Вам хочется использовать более безопасный метод аутентификации, то используйте его в паре с https, или другим безопасным протоколом.
Заголовки (Headers)
Основной протокол в интернете это Гипертекстовый протокол передачи данных (HTTP). Если Вы действительно хотите понять, что означают директивы Apache, Вы должен иметь представление о протоколе HTTP. Здесь я только поверхностно коснусь данной темы. Далее мы рассмотрим HTTP заголовки (Headers).
С каждым запросом (от браузера) и каждым ответом (от веб сервера типа Apache) приходят две секции. Секция с заголовками и секция с самими данными, если нет больше других.
Заголовки запроса приходят от клиента к серверу. Заголовки ответа наоборот. Они генерируются самим сервером (Apache): кодировка(the content encoding), размер, mime/type, управление кэшем (Cache Control), перенаправления (Redirects), статус (Status Codes) и другие. Когда-нибудь получали ошибку 404? Это результат запроса к несуществующему файлу. Сервер возвращает код 404 (Status Code) в своем ответе.
Начнем с примера. Добавим заголовок в ответ и посмотрим что получится:
Заметили у заголовка префикс «X-«. Так разработчики обычно помечают их, чтобы указать, что они не стандартные. Эта договоренность описана здесь.
Иногда разработчики указывают смешные заголовки (This site).
Однако, я хочу показать Вам, как создавать заголовки, которые Вы сможете использовать для отладки. Как то раз, я использовал их для проверки подключения модулей на сервере. Я сделал следующую проверку:
Когда я сделал запрос с браузера, я увидел заголовки, это означало, что модули подключены!
Есть различия между Header set и Header add. С помощью «add», заголовки всегда добавятся в ответ. Даже, если они встречаются несколько раз в ответе. Вы можете использовать «set», для того, чтобы переписать заголовок по умолчанию. Например, переопределить mime/type заданный заголовком Content-Type. И тогда не будет дубликатов!
Заключение:
Я не описал несколько базовых директив Apache. Моей задачей было дать фундаментальные знания.
Если Вам понравилась статья, проголосуйте за нее
Голосов: 21 Голосовать
Что такое файл htaccess и зачем он нужен?
Что такое файл htaccess и зачем он нужен?
Давайте сейчас в этом разберемся.
Что же это за файл?
По сути, это простой текстовый файл, который вы можете создать самостоятельно в любой папке на вашем веб-сервере.
Как правило, файл htaccess создается в корневой папке вашего сайта, но также он может встречаться в любой другой папке.
Создается этот файл как обычный текстовый файл. Вы можете попробовать создать его на своем веб-сервере. Если этот файл будет пустой, то на работу вашего веб-сервера это никак не повлияет.
Таким же образом его можно удалить, как простой текстовый файл.
Казалось, бы, что это простой текстовый файл, но какую смысловую нагрузку он несет?
1. Файл htaccess будет работать только на веб-сервере Apache.
2. Даже если у вас установлен веб-сервер Apache, на этом веб-сервере должна быть специальная разрешающая настройка, что в папках этого веб-сервера разрешается использовать этот файл.
Теперь переходим к тому, что же это такое.
Это простой текстовый файл, который содержит определенные текстовые команды, обрабатывая которые, веб-сервер Apache ведет себя каким-то определенным образом.
Для веб-сервера Apache есть 2 основных варианта как мы можем настроить его работу.
Во первых, мы можем сделать это в корневой папке самого веб-сервера, в той папке, в которой установлен сам веб-сервер Apache. Там есть специальный файл, который называется httpd.conf.
Это главный настроечный файл, который задает настройки самого веб-сервера. Что, как он будет работать, в каких случаях, какие результаты выдавать и.т.д.
Но, этот файл для начинающих пользователей может показаться слишком сложным. Поэтому доступ к этому файлу открыт не для всех.
Разработчики веб-сервера Apache придумали такое решение создавать в папках вашего сайта отдельный файл, который называется htaccess.
Этот файл позволяет вам также в нем записать какие-то настроечные команды для веб-сервера Apache, которые будут вносить изменения и перетирать те настройки, которые есть в этом файле.
С помощью файла htaccess мы можем настраивать веб-сервер и говорить ему то, как он должен вести себя в тех или иных ситуациях. Самая главная особенность в том, что мы можем это сделать даже без перезагрузки веб-сервера.
Что мы можем делать с помощью файла htaccess?
1) Можно настраивать перенаправления для вашего сайта. Например, пользователь перешел на ваш сайт с приставкой www и мы перенаправляем его соответственно на ту же самую страницу на которую он перешел, только уже без приставки www.
Также можно сделать редирект или перенаправление если пользователь обратился к вашему сайту по протоколу http, мы можем перенаправить его на версию сайта по протоколу https.
Если он обратился на какую-то несуществующую страницу, мы можем перенаправлять его соответствующей командой на какую-то существующую страницу.
2) Запрещать доступ к какому-то файлу папке, адресу и.т.д.
3) Подсказать браузеру как нужно себя вести при возникновении каких-то ошибок.
Например, пользователь обратился к какой-то несуществующей странице, появилась ошибка 404, что ему нужно делать? Как веб-серверу поступать в этом случае? Это все можно настраивать файлом htaccess.
Такой вот смысл использования этого файла, ничего сложного в этом нет. Главное освоить синтаксис команд, которые в нем могут использоваться.
Главный смысл файла htaccess в том, что это просто настроечный файл для веб-сервера Apache. Вот, собственно говоря, и все.
Что такое htaccess и почему этот файл обладает таким большим значением?
В апреле 1996 года этот сервер стал самым популярным в сети, а в августе 2007 года он стал основным сервером для 51% всех сайтов сети.
Именно с помощью этого файла задается множество дополнительных параметров и разрешений, которые используют в своей работе веб-сервера для отдельных пользователей или даже для отдельных папок пользователей. Это могут быть такие действия как переназначение типов используемых файлов, управление допуском для отдельных пользователей и т.д.
Как создать файл htaccess?
Алгоритм создания подобного файла выглядит следующим образом:
Ваш файл готов, теперь необходимо его загрузить на ваш сайт.
Как задается кодировка в файле htaccess?
В некоторых случаях браузер не может самостоятельно определить, каким образом следует кодировать представленный документ для того, чтобы отобразить его корректно.
Чтобы решить данную проблему, используемый тип кодировки указывается в Web настройках сервера Apache и в заголовке того документа, который необходимо отобразить.
Причем для того, чтобы браузер смог отобразить файл правильно обе эти кодировки должны полностью совпадать. В заголовках русскоязычных веб-страниц наиболее часто встречаются следующие типы кодировок:
Для того чтобы указать кодировку, в которой браузер будет отображать станицу, нужно использовать команду: « AddDefaultCharset
UTF-8 ».
В случае, если вам необходимо отменить перекодировку файла сервером вносим команду: « CharsetDisable on ».
Что такое htaccess rewriterule?
Но использование данного механизма заметно увеличивает загруженность сервера, поэтому не стоит злоупотреблять данным модулем.
Для того чтобы включить механизм преобразования сетевых адресов, следует прописать в директиве RewriteEngine значение on таким образом: « RewriteEngine on ». А вот установка значения off отключает данный модуль.
Директива RewriteRule определят набор правил для преобразования. Она обладает следующим синтаксисом: RewriteRule ( шаблон поискового запроса ) ( строка используемая в качестве замены ) [флаги].
Настройка ЧПУ в файле htaccess
Для начала хотелось бы отметить, что настройка ЧПУ именно через файл htaccess обладает некоторыми преимуществами. С помощью файла htaccess можно быстро внести изменения и произвести откат, если что-то пошло не так.
Настройка htaccess для правильного функционирования заключается в необходимости прописать в файле htaccess « RewriteEngine On », чтобы заставить работать все прописываемые команды.
1. Простые URL адреса типа: http://www.primer.ru/page.html
Чтобы подобный адрес превратить в URL вида http://www.primer.ru/page/ необходимо в имеющийся файл htaccess внести следующую команду: « RewriteRule ^page/$ page.html [L]».
А для того чтобы поисковая система не смогла заменить этот адрес на адрес со слэшем в окончании и без него немного модернизируем внесенный код:
Если подобная конструкция в htaccess не работает из-за особенностей сервера и того как произведена настройка файла htaccess следует прописать данную команду немного иначе:
В данном случае исполнение команды будет зациклено, о чем браузер обязательно вам сообщит, и чтобы этого не произошло, следует немного преобразить строку:
Где находится файл и как его редактировать
Если вы создаете этот файл самостоятельно, не забудьте точку в начале имени — ведь название фактически представляет собой файловое расширение.
Система PromoPult — рекламный комплекс для привлечения клиентов из интернета. SEO, PPC, SMM в одном аккаунте. Полная автоматизация, готовые чек-листы, точные настройки. Комплексное решение для малого и среднего бизнеса. Минимальные стартовые бюджеты, полный набор инструментов для всех каналов продвижения, глубокая автоматизация, кампании «под ключ».
Основные правила синтаксиса несложные: каждая команда начинается с новой строки. В файле можно оставлять комментарии (например, чтобы другие оптимизаторы или разработчики понимали, для чего прописана та или иная директива). Чтобы оставить комментарий, необходимо поставить знак #. Все содержимое строки, которое находится после этого знака, сервер не учитывает и не воспринимает как команду.
После сохранения файла изменения вступают в силу сразу. Сервер перезагружать не нужно.
Базовые спецсимволы:
^ — обозначает начало строки;
. — обозначает любой символ (кроме символа конца строки);
* — любое количество любых символов;
? — один определенный символ;
6 — заменяет любую цифру, [a-z] — любую букву из латинского алфавита;
| — символ «или», выбирается или одна группа, или другая;
() — применяется для выделения групп символов.
Часто используемые переменные:
%
%
Полный синтаксис и все возможности файла — в официальной документации. Также есть неплохой русскоязычный ресурс о практическом использовании файла.
При настройке 301 редиректов учитывайте следующее:
1. Постраничный редирект
Есть несколько ситуаций, когда требуются постраничные редиректы:
Не очень удачное решение — просто удалить страницу. Поисковые роботы при попытке зайти по проиндексированному URL получат ошибку 404, что не очень хорошо для SEO. Редирект — оптимальный вариант, так как позволяет сохранить и входящий трафик, и позиции в поисковой выдаче.
Как настроить 301 редирект
2. Редирект на страницу со слешем или без
Чтобы не вводить в заблуждение поисковых роботов, каждая страница сайта должна быть доступна только по одному адресу. Помните, что для роботов адреса https://site.com/catalog и https://site.com/catalog/ — это две страницы, а не одна. Поэтому нужно настроить:
Для устранения дублей с помощью этих настроек нужно воспользоваться модулем mod_rewrite. Здесь уже используются директивы сложного перенаправления. Первой командой необходимо включить модуль преобразования URL:
Редирект на адрес со слешем или наоборот
Существенной разницы здесь нет, выбранная логика зависит от того, какова в целом ситуация по сайту. На новых сайтах, как правило, настраивают перенаправление на страницу со слешем в конце URL. Если сайт работает давно, просто посмотрите, каких страниц в индексе больше.
Если нужен редирект на слеш, используйте такие команды:
На страницу без слеша редирект осуществляется с помощью такого кода:
3. Настройка главного зеркала
Первым делом определитесь, какой адрес должен использоваться как основной для поиска.
Редирект на HTTPS
При настройке главного зеркала нужно определиться, как указывать адрес: с «www» или без. Есть несколько способов для определения:
Перенаправление с адреса с www на адрес без www
Перенаправление с адреса без www на адрес с www
4. 301 редирект на другой домен
Чаще всего этот редирект используется при смене домена сайта (переезд на новый домен). Редирект 301 позволяет перенаправить поисковых роботов и пользователей на измененный адрес сайта. Еще его используют для серого SEO, но мы в это углубляться не будем.
mysite1 и mysite2 в коде — это адрес старого и нового домена, соответственно.
Ускорение работы сайта
5. Сжатие компонентов сайта с помощью модулей
У Gzip более гибкий синтаксис, который поддерживает работу с масками:
В mod_deflate необходимо указать типы файлов, которые следует сжать:
6. Управление кэшированием
С помощью этих команд сайт будет быстрее загружаться для тех пользователей, которые уже заходили на сайт ранее. Например, при первой загрузке сайта браузеру пользователя нужно загрузить все изображения и скрипты, расположенные на странице. Если включить кэширование, при повторном заходе на сайт браузеру не нужно будет заново скачивать все необходимые ресурсы. Он сможет использовать данные, сохраненные в кэше, что существенно ускоряет загрузку.
Так выглядят директивы для усиления кэширования:
В нашем примере мы ограничили продолжительность жизни кэша 1 неделей (“access plus 1 week”). Вы можете указать любое другое значение и использовать другие единицы измерения, например:
То же самое можно указать и с помощью такого кода:
А вот перечень типов файлов, которые можно кэшировать:
Настройка отображения сайта
7. Замена индексного файла
Индексный файл — страница, которая открывается по умолчанию при обращении к определенному каталогу. Вот так этот файл выглядит в каталоге сайта:
Допустим, у вас магазин мебели и на сайте есть раздел с офисной мебелью — https://mebel-shop.com/ofisnaya-mebel/. В директории каталога находится файл index.html, но вы хотите, чтобы по умолчанию пользователям загружался файл new.html с товарами-новинками.
«new.html» — название файла, который нужно показать вместо дефолтного.
Также в директиве можно указать несколько файлов. Если первый из них будет недоступен — откроется второй, если недоступен первый и второй — откроется третий, и т.д.
URL-адреса страниц сайта могут отображаться с расширением или без:
https://site.com/main.html или https://site.com/main
Отображение расширения не влияет на ранжирование сайта (по крайней мере, нет данных, которые бы это подтверждали). Каждый оптимизатор делает это по своему усмотрению.
Добавить расширение:
Убрать расширение:
9. Настройка кодировки
Если кодировка сайта указана неправильно (или не указана вовсе), текст на страницах может отображаться в виде набора непонятных символов. Поэтому всегда указывайте кодировку.
Чтобы задать файлу кодировку Windows-1251, используйте такой код:
Для того, чтобы все файлы при загрузке на сервер преобразовались в кодировку UTF-8, нужна такая директива:
10. Страницы для 4хх ошибок
Стандартные страницы ошибок (например, 404) можно сделать оригинальными и полезными для пользователя. Например, разместить там информативное сообщение о том, почему появилась ошибка и дать ссылки на другие разделы сайта. Это поможет удержать пользователей на сайте.
11. Защита изображений от скачивания конкурентами
Вот, что нужно прописать:
При попытке загрузить любые картинки с расширением gif, jpg или png с вашего сайта конкуренты получат изображение goaway.gif. На нем размещено сообщение о том, что красть чужие картинки — это плохо. Здесь вы можете покреативить и пристыдить конкурентов (изображение появится на ресурсе, на котором планировали использовать ваши картинки), либо просто поставить любое изображение-заглушку. Вместо «mysite.com» укажите адрес вашего сайта.
12. Ограничение доступа к сайту
Директивы для блокирования User Agents (ботов)
Вы можете использовать этот список юзер-агентов, дополнить его или убрать ненужные позиции. Также вы можете создавать такие списки с нуля. А здесь вы можете посмотреть список хороших и плохих юзер-агентов ботов.
Запрет по IP
Здесь есть два варианта:
Запрет доступа для всех, кроме указанных IP
«https://mysite.com» здесь — адрес вашего сайта. IP1 и IP2 — места для указания IP-адресов, которым вы хотите открыть доступ к сайту.
Запрет доступа для определенных IP
Запрет доступа для подсети
После «deny from» впишите маску подсети.
С помощью этих директив вы можете блокировать IP, с которых на вашем сайте оставляют спамные комментарии. Или IP, с которых поступает слишком много запросов, нагружающих сервер. Вычислить эти адреса вы можете в логах сервера или в сервисах статистики.
Закрыть доступ к определенному файлу
В первой строке вместо «myfile.html» указываем название файла, к которому хотите запретить доступ. Название файла обязательно указывайте с расширением. При попытке открыть файл пользователь увидит ошибку 403 — «доступ запрещен».
Ограничение доступа пригодится и в таких случаях:
Блокировка трафика с нежелательных ресурсов
Например, вы не хотите, чтобы на ваш сайт попадали посетители с сомнительных ресурсов (с шок-контентом, скажем). Пропишите такую команду:
Вместо «bad-site.com» укажите URL-адреса сайтов, с которых не хотите принимать входящий трафик.
13. Настройка доступа к файлам или папкам по паролю
1. Создайте файл с паролями
Где «user» — это логин пользователя, а «password» — соответствующий пароль.
Разместите файл с паролями в корневой директории сайта.
Для обеспечения безопасности паролей их лучше зашифровать. Это можно сделать с помощью специальных генераторов, например этого.
Укажите, какие именно файлы или папки нужно защитить паролем.
Установка пароля для файла
Установка пароля для папки
«/pub/home/.htpasswd» — расположение нашего файла с логинами и паролями. Укажите путь к своему файлу от корня. После установки пароля проверьте, корректно ли выполняются все директивы.
14. Защита от внедрения скриптов
Хакеры могут использовать ваш сайт в своих целях с помощью скриптовых инъекций — внедрения фрагмента кода, который будет выполняться на вашем сайте.
При попытке выполнить любой скрипт на вашем ресурсе злоумышленник получит ответ сервера 403 — «доступ запрещен».
15. Защищаем сайт от DOS-атак
Например, ограничить размер загружаемых файлов в байтах:
В этой директиве указано ограничение на файлы больше 10 Мбайт.
Если хотите защититься более основательно — изучите директивы LimitRequestFields, LimitRequestFieldSize и LimitRequestLine в официальной документации.
16. Настройки php
Эти настройки нужны программистам, если по каким-то причинам нет доступа к файлу php.ini.
Рассмотрим для примера выражения php_value — позволяет устанавливать максимальный объем данных, загружаемых на сайт и максимальное время обработки скриптов. Это важные настройки, так как напрямую влияют на производительность сайта.
В строке «upload_max_filesize» указываете максимальный размер загружаемых файлов в мегабайтах, «post_max_size» означает максимальный объем постинга, «max_execution_time» указывает время в секундах на обработку скриптов.
17. Борьба со спамерами в комментариях на WordPress
Чтобы избавиться от спамных комментариев, закройте доступ к файлу wp-comments-post.php. Сделать это можно с помощью таких команд:
Вместо «mysite.com» впишите адрес вашего сайта.
18. Назначение e-mail для администратора сервера
С помощью этого кода можно назначить адрес электронной почты администратора:
Все уведомления о важных событиях на сервере будут приходить на этот адрес.
19. Вывод сообщения о недоступности сайта
Лучше, конечно, избегать ситуаций, когда сайт недоступен. Но если это все-таки случилось, следует показать пользователям страницу с информацией о том, что сайт недоступен по техническим причинам. А также сообщить, когда ресурс снова заработает в нормальном режиме.
Такие команды перенаправят пользователя на страницу с информацией о недоступности сайта:















