Htaccess options indexes что значит

Содержание
  1. Создание и настройка .htaccess
  2. Общие сведения
  3. Создание и редактирование .htaccess
  4. Примеры настроек
  5. Перенаправления
  6. Параметры PHP
  7. Управление доступом к сайту
  8. Защита сайта или директории паролем. Базовая аутентификация
  9. Блокировка запросов по User-Agent
  10. Ограничения по видам запросов
  11. Индексная страница по умолчанию
  12. Собственные страницы ошибок
  13. Кодировка
  14. Отображение листинга (содержимого директории)
  15. Директива Options
  16. Подробное руководство по .htaccess файлам
  17. Введение
  18. Что такое .htaccess?
  19. Директивы
  20. Включение поддержки .htaccess
  21. Полное использование .htaccess
  22. Ограниченное использование .htaccess
  23. Комментарии
  24. Проверка включена ли поддержка .htaccess
  25. Способ 1
  26. DirectoryIndex
  27. Способ 2
  28. AccessFileName
  29. Последствия использования .htaccess файлов:
  30. Листинг директории — Indexes:
  31. Отображение содержимого каталога
  32. Директива Options
  33. Базовая аутентификация (Basic Authentication)
  34. Заголовки (Headers)
  35. Заключение:

Создание и настройка .htaccess

Общие сведения

.htaccess — это конфигурационный файл веб-сервера Apache, который позволяет задавать различные настройки для работы веб-сервера, применяемые для конкретных каталогов пользователя.

Параметры, указанные в .htaccess, не затрагивают настройки главного конфигурационного файла Apache и имеют силу только для каталога, в котором этот файл размещен, и его подкаталогов. Для подкаталогов также можно создавать дополнительные .htaccess-файлы; при этом необходимо учитывать, что настройки .htaccess, заданные в подкаталоге, переопределят настройки, назначенные для него в файле .htaccess, размещенном на уровне выше.

Настройки в .htaccess задаются различными директивами, которые далее обрабатываются и выполняются веб-сервером. С помощью .htaccess можно настраивать перенаправления, управлять опциями PHP, устанавливать разрешения и права доступа к файлам, задавать собственные страницы ошибок и выполнять множество других действий.

Создание и редактирование .htaccess

Создать файл настроек .htaccess вы можете при помощи файлового менеджера панели управления аккаунтом.

1. Перейдите в раздел «Файловый менеджер» панели управления.

2. Выберите пункт меню «Файл» — «Новый файл».

3. Выберите из списка расширений .htaccess.

Читайте также:  Экзерсисы что это значит словесные

4. Нажмите кнопку «Создать файл».

Возникновение ошибки «Имя уже используется» означает, что данный файл уже создан в текущей директории.

Для редактирования файла в файловом менеджере перейдите в директорию с данным файлом, выделите его кликом левой кнопки мыши и выберите пункт меню «Файл» — «Редактировать».

В открывшейся форме редактирования можно внести необходимые изменения в файл конфигурации: добавить или удалить директивы. Также можно закомментировать неиспользуемые настройки, для этого необходимо добавить в начале строки символ #. Настройки, указанные в таких строках, учитываться не будут.

Вы также можете редактировать .htaccess во внешних редакторах, но обратите внимание, что текстовые редакторы Windows (например, «Блокнот») при сохранении любых документов с кодировкой UTF-8 добавляют в них метки порядков байтов юникода — BOM-сигнатуры. Файлы с такой сигнатурой некорректно обрабатываются веб-сервером, поэтому мы рекомендуем редактировать .htaccess напрямую в «Файловом менеджере» или через специальный редактор «Notepad++».

Примеры настроек

Перенаправления

Настройка редиректов описана в отдельной статье: Типовые перенаправления.

Параметры PHP

Настройка опций PHP через .htaccess описана в отдельной статье: Настройка параметров PHP.

Управление доступом к сайту

Разрешить или ограничить доступ к сайту для определенных IPv4-адресов можно с помощью директив Order Allow,Deny или Require . В новых версиях Apache, начиная с 2.4, которая используется на наших хостинговых серверах, рекомендуется использовать именно Require.

Обратите внимание, что в рамках нашей архитектуры директивы запрета доступа не будут работать для IPv6. Для запрета доступа с IPv6-адресов необходимо удалить АААА-запись домена.

Разрешить доступ конкретным IP (для остальных доступ запрещен):

Несколько IP-адресов могут указываться через пробел или отдельными директивами, каждая в новой строке.

Запретить доступ конкретным IP (для остальных доступ разрешен). Для работы запрещающих директивы, их необходимо заключать в блоки :

При использовании Allow,Deny:

Разрешить доступ всем, кроме конкретного IP:

Запретить доступ всем, кроме конкретного IP:

Запретить доступ для всех:

Аналогичным образом можно настроить доступ к конкретным файлам, включив эти директивы в блоки , например:

Защита сайта или директории паролем. Базовая аутентификация

Если требуется защитить сайт или конкретную папку сайта паролем, можно воспользоваться базовой аутентификацией, которая работает на уровне веб-сервера Apache и настраивается также с помощью файла .htaccess.

В первую очередь задайте логин и пароль, которые будут использоваться для входа. Для этого подключитесь к аккаунту по SSH и выполните команду ниже, указав нужные вам значения:

После выполнения команды в корневом каталоге вашего аккаунта будет создан файл .htpasswd, содержащий логин и хэш-сумму пароля. Если в дальнейшем вам потребуется изменить указанный пароль, снова используйте команду выше.

Перейдите в директорию, которую необходимо защитить паролем (например, это может быть директория wp-admin), и создайте в ней файл .htaccess со следующим содержимым, указав вместо u и user первую букву вашего логина и сам логин:

Если речь идет о защите всего сайта в целом, эту конструкцию необходимо вставить в общий .htaccess-файл, размещенный в директории public_html вашего сайта.

Блокировка запросов по User-Agent

Можно ограничить доступ к сайту для определенных User-Agent. Например, при нежелательной активности ботов MJ12bot и SolomonoBot, используйте:

Ограничения по видам запросов

Для применения ограничений для определенных методов запросов можно использовать блоки
:

Для новых версий Apache, начиная с 2.4, оптимально использовать директивы Require и заключать их в блоки :

Индексная страница по умолчанию

Директива DirectoryIndex позволит вам указать страницу, которая будет отдаваться по умолчанию при обращении к директории, например:

Вы также можете указать несколько страниц, в этом случае сервер «пройдет» по списку слева направо и отобразит первую доступную страницу:

Собственные страницы ошибок

С помощью директивы ErrorDocument вы можете сообщить веб-серверу, какая страница должна отдаваться клиенту в случае возникновения определенной ошибки (403, 404, 500 и др.). Для этого необходимо указать номер ошибки и адрес нужной страницы:

Вы можете хранить файлы этих страниц как в корне сайта, так и в специально созданной папке, например, errors.

Кодировка

Указать кодировку по умолчанию (например, cp1251, utf-8, koi8-r) для всех выдаваемых страниц можно с помощью AddDefaultCharset, например:

При использовании PHP версии 5.6 и выше может потребоваться дополнительно указать:

Отображение листинга (содержимого директории)

Если индексный файл запрашиваемой клиентом директории недоступен, будет выведена ошибка «403 Forbidden». Если вместо этого необходимо отображение содержимого директории, потребуется добавить в .htaccess директиву:

Источник

Директива Options

Полная поддержка директив .htaccess прилагается.

Одни из самых дешевых услуг регистрации и главное пролонгации доменов.

Как уже сообщалось на предыдущей странице директива htaccess файла Options позволяет задать ряд общих параметров, из которых наиболее популярны следующие: ExecCGI (разрешить выполнение CGI -скриптов), FollowSymLinks (обрабатывать симлинки), Includes (разрешить SSI), IncludesNOEXEC (разрешить SSI без запуска скриптов), Indexes (показывать посетителю список файлов, если в выбранном каталоге нет файла index . html или его аналога).

Параметры записываются через пробел и могут иметь в начале знаки + или -, которые управляют наследованием.

# все что пишется в строке после символа «#» — в

# конфигурационных файлах Apachе считается комментариями.

# включим только параметр Includes

Иногда нужно сделать так, чтобы в случае отсутствия в каталоге файла, который показывается по умолчанию, листинг, то есть список файлов в каталоге, не выдавался (не показывать каталог сайта — его содержимое в случае отсутвия в нем индексного файла — index.html, index.php. ). В этом случае добавим в .htaccess такую строчку:

Options -Indexes

А что бы выдавал листинг, нужно:

# включим параметр Includes и _вы_ключим параметр Indexes

# а все остальные параметры будут иметь значения, заданные в

# глобальных установках веб-сервера

Options +Includes –Indexes

Недавно освободившиеся домены с PR и ТИЦ:

Сервис http://reg.ru — крупнейшего хостинга и регистратора доменов позволяет подать заявку на регистрацию доменного имени, которое недавно было освобождено прежним Администратором. Освобожденные домены часто имеют высокие показатили ТИЦ и PR и могут быть интересны к приобретению.

Использовать промокод при оплате услуг сможет каждый из зарегистрировавшихся только один раз. Поэтому вначале добавляем в корзину все что нужно, а затем одной операцией вводим купон и проводим оплату.

Источник

Подробное руководство по .htaccess файлам

категория
Веб технологии
дата 17.07.2009
автор poizon
голосов 21

[Disclaimer: Данная статья была переведена в рамках «Конкурса на лучший перевод статьи» на сервисе Quizful. Ссылка на оригинал находится внизу страницы.]

Введение

В интернете можно найти бесчисленное множество статей по .htaccess файлам, но ни одна из них не дает ответа на вопрос «Как эти файлы работают?». Статьи представляют собой просто коллекцию популярных заметок и хитростей с одинаковыми фрагментами кода. Это все конечно хорошо, но вот аргумент:

“Дай человеку рыбу, и он съест ее за один день. Научи человека ловить рыбу и он будет есть ее на протяжении всей жизни.” — Конфуций

В данной статье мы попытаемся не только показать Вам примеры полезных .htaccess директив, но и ответить на вопрос «Как эти файлы работают?». Внимание будет уделяться Apache 2, однако большая часть может быть применена к Apache 1.3, и мы попытаемся указать на их различия.

Что такое .htaccess?

.htaccess файлы (или «распределенные конфигурационные файлы») позволяют задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т. д, без изменения главного конфигурационного файла.

Директивы

«Директивы» — понятие, которое Apache использует в командах файла конфигурации Apache. Это сравнительно короткие команды, обычно пары ключ => значение, которые меняют поведение Apache. .htaccess файл позволяет разработчикам исполнять связку директив, не имея доступа к основному файлу конфигурации сервера Apache (обычно httpd.conf). Файл httpd.conf обычно называют «основной файл конфигурации», поэтому я буду ссылаться на него по этому названию, или его короткому эквиваленту httpd.conf.

Эта особенность идеальна для большинства хостинг-компаний предоставляющих общий хостинг. Хостинг-компании не дают своим клиентам доступа к основному файлу конфигурации, который имеет отношение ко всем клиентам размещенным на этом сервере. Поэтому, включая .htaccess, они дают своим клиентам возможность устанавливать и исполнять свои собственные директивы Apache на свои директории и их поддиректории.

Отметим, что все что может быть выполнено с помощью .htaccess файла может быть выполнено в httpd.conf. Однако, не все что может быть выполнено в httpd.conf может быть выполнено в .htaccess.

Включение поддержки .htaccess

Обычно, использование .htaccess включено по умолчанию. Отношения между глобальным файлом доступа и пользовательскими файлами .htaccess контролируется директивой AllowOverride в файле httpd.conf. Она может быть размещена только внутри блока . Значением по умолчанию является конечно «All». Таким образом использование .htaccess файлов включено по умолчанию. Альтернативным значением может быть «None», это значит что они полностью выключены. Есть множество других значений, которые ограничивают конфигурацию только определенным контекстом. Например, такие как:

  • AuthConfig — Разрешает использование директив разрешения, необходимых для защиты каталогов паролями, т.е. разрешает установку авторизации по имени пользователя и паролю (базовая аутентификация ).
  • FileInfo — Разрешает использование директив, управляющих типами документа (Headers, Error Documents, Cookies, URL Rewriting и т.д.).
  • Indexes — Показывать посетителю список файлов, если в выбранном каталоге нет файла index.html или его аналога
  • Limit — Допускает использование основных директив управления доступом (allow, deny и order), директив сакционирования Limit, т.е., например, ограничивает доступ к файлам в зависимости от адреса клиентского компьютера.
  • Options — Позволяет управлять тем, какие функции сервера доступны для использования в каталоге, указанном в секции . Может принимать значения ExecCGI, FollowSymLinks, MultiViews, Includes и другие.

Полное использование .htaccess

Я покажу несколько примеров без надлежащего блока . В этом примере включается возможность использования .htaccess в полном объеме:

# Даем .htaccess файлам полную силу

Ограниченное использование .htaccess

А в данном примере, включаем только аутентификацию и индексы :

# Здесь говорим, что .htaccess ограничен только AuthConfig Indexes

AllowOverride AuthConfig Indexes

Комментарии

Первые строчки, выше приведенных примеров, это комментарии Apache. Комментарии начинаются с символа «#». Множество комментариев в примерах помогут Вам понять, что в них делается. Однако, они не обязательны, это сугубо индивидуально.

Вторая строчка сама директива AllowOverride. Это обычный синтаксис директив Apache. За директивой следуют пробелы, разделяющие список значений. Конечно, такой синтаксис смотрится довольно свободным. Всегда будьте осторожны .

Иногда, даже одна ошибка в файлах httpd.conf или .htaccess может привести к временной неработоспособности сервера, и пользователи будут видеть ошибку «500 — Internal Server Error pages».

По этой причине, хорошей практикой всегда является бэкап файлов httpd.conf и .htaccess перед их изменением. Сделав это, вы всегда сможете вернуться к прежней рабочей конфигурации. Я призываю Вас, всегда делать не много изменений единовременно, и применять изменения по нарастающей, с проверкой работы прежних. Следуя такому пути, в случае ошибки, Вы всегда будете знать в какой она строчке.

Если Вы сомневаетесь в синтаксисе директив, то смотрите их на Apache Directive, где каждая директива включает пункт «Syntax». Я могу сделать эту статью интереснее, но всегда самой лучшей документацией является документация официальная.

Проверка включена ли поддержка .htaccess

Вполне возможно, что Ваша хостинг-компания не даст Вам доступ к httpd.conf файлу. Поэтому как Вы узнаете, включена ли поддержка .htaccess или нет? Не беспокойтесь. .htaccess это такая полезная функция, что большинство компаний включают ее, ну или включат по Вашей просьбе. Если в конфигурации Вашего хостинга не указана поддержка .htaccess, то обратитесь в технический отдел с письмом «проверить поддержку». Скорее всего у них уже подготовлен ответ на Ваш вопрос!

В любом случае, Вы всегда можете проверить работу простого .htaccess файла. Далее мы рассмотрим два способа проверки поддержки .htaccess.

Способ 1

Этот тест очень прост. Мы используем директивы, чтобы заставить Apache искать «index good.html» до «index.html». Если поддержка .htaccess включена, то при заходе в папку через браузер, Apache загрузит .htaccess и узнает, что он должен показать страницу «indexgood.html» с поздравлением! Если поддержка выключена, то Apache проигнорирует .htaccess, и немедленно начнет искать файл «index.html» по умолчанию.

DirectoryIndex

Директива DirectoryIndex получает, разделенный запятыми, список возможных файлов. Когда Apache получает URL директории (не прямой путь к файлу, например,http://www.example.com и не http://www.example.com/index.html), он будет использовать этот список файлов для поиска нужного файла. Он будет пробегать список слева направо. Если первый файл, который смотрит Apache, существует, то он загрузит и покажет его клиенту. Покажем работу выше указанного .htaccess файла для случая с поддержкой и без:

Способ 2

Как я сказал ранее, синтаксическая ошибка в Вашем .htaccess файле заставит сервер поперхнуться на его разборе. Это можно использовать для проверки!

Здесь «AHHHHHHH” не является директивой Apache. Это приведет к ошибке, если Apache попытается прочитать такой .htaccess файл! Поэтому, если Вы получите в ответ страницу с «Internal Server Error», говорящую о том, что сервер искал Ваш .htaccess файл, значит поддержка включена! А если Вы увидите index.html, то поддержка .htaccess отключена. Оба случая приведены ниже:

AccessFileName

И наконец, возможно, что поддержка .htaccess включена, но с уникальной настройкой. Системный администратор может изменить имя .htaccess файла, как мы поменяли имя индексного файла по умолчанию, который ищет Apache. Это возможно с помощью директивы AccessFileName в httpd.conf. Еще раз: самый лучший способ в данной ситуации, обратиться в отдел технической поддержки с просьбой предоставить более подробную информацию.

Последствия использования .htaccess файлов:

Перед тем как я покажу Вам некоторые полезные приемы, которыми Вы сможете пользоваться, я должен рассказать Вам о возможных вредоносных последствиях. Как я говорил ранее, .htaccess переопределяет настройки сервера для директорий и поддиректорий. Запомните, что изменения будут действовать не только на саму директорию, но и на ее поддиректории.

Это говорит вот о чем. Во первых, Apache ищет .htaccess файлы при каждом запросе, любые изменения будут немедленно применены. Apache не кэширует их, и Вы сможете проверить изменения при следующем запросе. Тем не менее, это значит, что Apache выполняет некоторые дополнительные действия для каждого запроса. Например, если пользователь запрашивает /www/supercool/test/index.html, то сервер проверит существование следующих .htaccess файлов:

  1. /www/.htaccess
  2. /www/supercool/.htaccess
  3. /www/supercool/test/.htaccess

Это возможные файлы доступа (возможные потому, что файлы могут не существовать) и их запуск займет время. Тем не менее, если Вы не имеете доступа к httpd.conf файлу, то Вы можете всегда включать директивы в .htaccess. С настройкой AllowOverride None, Apache не будет искать .htaccess файлы и Вы можете включить настройки только непосредственно в httpd.conf:

Листинг директории — Indexes:


Отображение содержимого каталога

Перед описанием группы функций, давайте начнем с чего-нибудь простого, но полезного, так Вы сможете прочувствовать работу .htaccess файлов.

Когда посетитель запрашивает ссылку на каталог (например, http://htaccess.net.ru/doc/), и такой каталог существует, Apache сперва ищет файл по умолчанию. Обычно он называется «index.html» или «index.php». Если он не находит таких файлов, то он возвращается к модулю mod_autoindex, чтобы вывести список файлов и директорий в запрашиваемой директории. Иногда это функция включена иногда нет. Точно, с помощью .htaccess Вы можете легко манипулировать листингом!

По умолчанию отображение директории включено. Ниже пример сценария. Предположим у нас есть группа медиа файлов, которые хранятся на сервере. И Вы хотите скрыть их от чужих глаз, чтобы никто не имел к ним доступа. Это легко сделать! Просто создайте файл .htaccess в директории, которую Вы хотите скрыть, и пропишите следующую директиву:

Директива Options

Эта директива может принимать несколько значений. Если Вы снабжаете параметры символами «+» или «-«, как мы делали с -Indexes, то эта опция будет наследована директориями выше и основной конфигурацией! Если Вы не указываете эти символы, то будет доступно только для данной директории и ее поддиректорий.

С такой директивой в Вашем .htaccess файле, Вы не увидите списка файлов. Посмотрим, что было до и после установки директивы:

Базовая аутентификация (Basic Authentication)

Возможно, отключение листинга директорий это не то, что Вы хотите сделать. Наверно Вы хотите оставить листинг, но пускать на страницы только определенных пользователей сайта. Базовая аутентификация (Basic Authentication) может быть полезной в таком случае. Это основной тип аутентификации в интернете. Когда посетитель пытается получить доступ к странице, он видит диалоговое окно Пользователь/Пароль. Только нужные пользователи смогут получить доступ.

Для базовой аутентификации необходимы два шага:

  1. Создать файл, в котором будут храниться имя пользователя и пароль(шифрованные).
  2. Добавить в .htaccess несколько строчек для использования файла с паролями.

Обычно, файл с паролями разработчики называют «.htpasswd». Это так, потому что команда, которая генерирует шифрованную пару пользователь/пароль, называется htpasswd. Если Вы владеете этой командой, то Вам не составит труда создать новую пару. В противном случае можете воспользоваться онлайн сервисом, который просто выдаст сгенерированный текст в окно браузера.

Давайте создадим простой .htpasswd файл для пользователя «joe» с паролем «cool». Вставим эти данные в онлайн сервис и получим:

Выводы могут быть разными и это нормально. Пароли хэшируются со случайным параметром, чтобы сделать их безопаснее. После того, как Вы добавили полученные данные в .htpasswd файл, добавим следующие строчки в .htaccess:

Эти команды хорошо документированы. Самая сложная задача, это только указание правильного пути к файлу .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) в своем ответе.

А что можно сделать в .htaccess? Вы можете использовать директивы Apache, чтобы переписать (изменить) или добавить новые заголовки, которые будут отправлены клиенту в ответе.

Начнем с примера. Добавим заголовок в ответ и посмотрим что получится:

Запрос к файлу в той же директории, что и .htaccess файл, покажет наш заголовок:

Заметили у заголовка префикс «X-«. Так разработчики обычно помечают их, чтобы указать, что они не стандартные. Эта договоренность описана здесь.

Иногда разработчики указывают смешные заголовки (This site).

Однако, я хочу показать Вам, как создавать заголовки, которые Вы сможете использовать для отладки. Как то раз, я использовал их для проверки подключения модулей на сервере. Я сделал следующую проверку:

Когда я сделал запрос с браузера, я увидел заголовки, это означало, что модули подключены!

Есть различия между Header set и Header add. С помощью «add», заголовки всегда добавятся в ответ. Даже, если они встречаются несколько раз в ответе. Вы можете использовать «set», для того, чтобы переписать заголовок по умолчанию. Например, переопределить mime/type заданный заголовком Content-Type. И тогда не будет дубликатов!

Заключение:

Я не описал несколько базовых директив Apache. Моей задачей было дать фундаментальные знания.

Если Вам понравилась статья, проголосуйте за нее

Голосов: 21 Голосовать

Источник

Оцените статью