Какие права на файл htaccess

Обновлено: 02.07.2024

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

Файл .htaccess можно создать в текстовом редакторе, а затем подгрузить его на сайт с помощью ftp-клиента

Примечание: имя файла .htaccess не содержит дополнительных слов или расширений.

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

Особенности файлов .htaccess

Хотя страница .htaccess невероятно полезна и может заметно улучшить сайт, при ее использовании нужно помнить о двух моментах.

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

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

Как включить файл .htaccess?

Имея доступ к настройкам сервера, можно отредактировать конфигурации Apache, чтобы позволить файлам .htaccess подменять стандартные конфиги сайта. Откройте конфигурационный файл хоста apache2 по умолчанию.

Примечание: на данном этапе понадобятся sudo-привилегии.

sudo nano /etc/apache2/sites-available/default

Открыв файл, найдите следующий раздел и измените значение директивы AllowOverride с None на All. Раздел должен выглядеть так:

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

Сохраните и закройте файл, а затем перезапустите apache.

sudo service apache2 restart

Создание файла .htaccess

Как уже говорилось, файл .htaccess можно создать при помощи текстового редактора, а затем загрузить его на сайт через ftp-клиент (при этом имя файла .htaccess не должно содержать дополнительных слов или расширений).

Общие случаи использования .htaccess

1. Mod_Rewrite

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

2. Аутентификация

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

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

В файле .htpasswd нужно указать имена и пароли всех пользователей, которым разрешен доступ к защищенной части сайта.

Имена и пароли вносятся в файл в виде пары имя_пользователя:зашифрованный_пароль. Например, если пользователь с именем best_user имеет пароль awesome, то такая пара может иметь вид «best_user:VtweQU73iyETM».

Примечание: каждая пара вносится в отдельную строку. Файл .htpasswd может содержать столько строк, сколько необходимо.

Создав .htpasswd, внесите в .htaccess следующий код, чтобы активировать функцию аутентификации:

AuthUserFile /usr/local/username/safedirectory/.htpasswd
AuthGroupFile /dev/null
AuthName Please Enter Password
AuthType Basic
Require valid-user

Строка AuthUserFile определяет путь к файлу .htpasswd.

Строка AuthGroupFile указывает расположение .htgroup. Поскольку на данный момент такого файла не существует, оставьте значение /dev/null.

Строка AuthName содержит текст, который будет отображаться в приглашении ввести пароль (можно ввести абсолютно любой текст).

Строка Require valid-user говорит файлу .htaccess, что в защищенные паролем разделы сайта должны иметь доступ несколько человек. В случае если нужно указать определенного человека, имеющего доступ к закрытым частям сайта, вместо строки Require valid-user используется строка Require user имя_пользователя.

3. Пользовательские страницы ошибок

Файл .htaccess позволяет создавать для сайта пользовательские страницы ошибок. Некоторые из наиболее распространенных ошибок являются:

  • 400 Bad Request (Неверный запрос)
  • 401 Authorization Required (Требуется авторизация)
  • 403 Forbidden Page (Запрещенная страница)
  • 404 File not Found (Файл не найден)
  • 500 Internal Error (Внутренняя ошибка)

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

Для примера можно создать страницу 404 (попробуйте создать любую страницу ошибки на ваш выбор).

Создав и загрузив страницу ошибки, укажите ее местонахождение в файле .htaccess:

ErrorDocument 404 /new404.html

Запомните: Apache ищет страницу 404 в root-каталоге сайта. Поместив новую страницу ошибки 404 в каком-либо подкаталоге, не забудьте добавить этот подкаталог в строку, например:

ErrorDocument 404 /error_pages/new404.html

4. MIME-типы

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

AddType audio/mp4a-latm .m4a

Не забудьте заменить приложение и расширение файла MIME-типом, который нужно поддерживать.

5. SSI

Технология Server Side Includes отлично экономит время на веб-сайте. Одним из наиболее распространенных способов использования SSI является обновление большого количества страниц, содержащих определенный блок данных, без необходимости обновлять каждую страницу по отдельности (например, чтобы изменить цитату в нижней части страницы).

Чтобы включить SSI, введите в .htaccess следующий код:

AddType text/html .shtml
AddHandler server-parsed .shtml

Эти строки сообщают .htaccess о том, что файлы .shtml действительны, а вторая строка говорит серверу проверять все файлы, которые заканчиваются на .shtml, на наличие SSI-команд.

Тем не менее, если на сервере находится большое количество страниц .html, поменять расширение которых на .shtml займет много времени, можно использовать другую тактику их проверки на SSI-команды. Для этого используется параметр XBitHack.

Добавление этой строки в файл .htaccess заставляет Apache проверять все html-файлы с соответствующими правами для Server Side Includes.

Чтобы позволить странице использовать XBitHack, введите:

chmod +x имя_страницы.html

Итоги

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

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

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

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

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

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

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

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

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

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

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

Вы также можете редактировать .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 (для остальных доступ разрешен). Для работы запрещающих директивы, их необходимо заключать в блоки <RequireAll>:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Кодировка

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

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

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

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

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

Как изменить доступ к файлам, с помощью .htaccess?

Для того чтобы это сделать, мы в корневой папке сайта создаем файл .htaccess. Данный файл необходимо открыть как обычный текстовик или с помощью программы для написания кода. Я открываю этот файл через программу Sublime Text.

prog-time.ru

Для файла .htaccess следует использовать права доступа 644 и загружать его в ASCII-режиме. Если ваш .htaccess файл не работает, то вам следует обратиться к системному администратору или в техподдержку вашего веб-хостинга и убедиться, что использование его разрешено для вашей учетной записи, так как некоторые хостинговые компании не позволяют его использование без предварительного разрешения, это в основном относится к бесплатным хостингам. Также, к сожалению, .htaccess не будет работать на Windows-серверах.

Первая директива, с которой мы познакомимся, это директива Order. Синтаксис директивы прост и она может быть использована в двух вариантах:

В зависимости от выбранного варианта [Deny,Allow] или [Allow,Deny] для директивы Order, мы изменяем логику работы сервера. Если используем первый вариант (Deny,Allow), то мы сообщаем серверу, что хотим запретить доступ для всех (deny), кроме тех, которым разрешим (Allow).

Когда мы используете второй вариант (Allow,Deny), то подразумевается, что мы разрешаем доступ всем, кроме определенных IP.

Здесь стоит отметить, что на самом деле использование директивы Order не является обязательным и возможно использование директив Deny и Allow без директивы Order. Также не будет ошибкой, если, к примеру, объявив в директиве Order вариант Deny,Allow, мы сначала используем директиву Allow, а затем Deny. Хотя все же лучше будет, если мы в этом вопросе не будем отходить от рекомендаций документации.

Как закрыть доступ для всех?!

Итак, для того, чтобы закрыть доступ к сайту для всех, достаточно прописать в файле htaccess в корне следующие строки:

Так мы закрыли доступ ко всему сайту для всех IP. Теперь сервер будет отдавать клиенту ответ 403, т.е. доступ запрещен.

Как закрыть доступ всем, кроме определенного ip?!

Если вы захотите открыть при этом доступ к сайту с конкретного IP, тогда его можно указать в директиве Allow. Например, откроем доступ для IP 127.0.0.1:

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

Как закрыть доступ к определенной директории сайта?!

Очевидно, что точно так же мы можем закрыть доступ не ко всему сайту, а только к какой-нибудь папке. Для этого просто нужно создать в папке файл htaccess и в нем прописать всего одну строку:

Как закрыть доступ к файлу на сайте?!

А что, если мы хотим запретить доступ не к папке, а к файлу. Для этого мы воспользуемся еще двумя директивами: Files и FilesMatch. Данные директивы похожи на HTML-теги, поскольку требуют закрывающей директивы и заключены в знаки меньше/больше:

На самом деле они представляют собой некую ограничивающую конструкцию, позволяющую обратиться только к конкретному файлу или файлам. Например, давайте закроем доступ к архиву rar.rar:

Теперь файл пропадет из листинга каталога и при попытке обращения к файлу напрямую сервер вернет нам вместо файла 403 ошибку.

Если мы хотим ограничить доступ к группе файлов, то здесь можно использовать директиву FilesMatch вкупе с регулярными выражениями. Например, так можно ограничить доступ к графическим файлам и архивам:

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

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

Содержание

Что такое .htaccess и для чего он нужен

Как создать файл .htaccess

Как уже говорилось, конфигурационные файлы имеют текстовый формат, и создать .htaccess также можно с помощью текстового редактора (например, Блокнота или NotePad++ в Windows).

Имя файла — .htaccess (с точкой в начале);

формат переноса по словам;

режим ASCII (при загрузке .htaccess на хостинг по FTP-протоколу).

Apache — регистрозависимый веб-сервер, поэтому важно написать название маленькими буквами: .HTaccess и .htaccess — это разные файлы.

Синтаксис .htaccess

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

Возможности .htaccess

Контроль доступа

Запрет веб-доступа, кроме IP:

Запрет веб-доступа для IP:

Запрет доступа к файлу:

Защита директории с помощью пароля:

Работа с ошибками веб-сервера

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

Настройка 301 редиректа в htaccess

Для создания постоянного перенаправления используется директива 301 редиректа, которая передает весь вес страницы на новый URL (поэтому оно предпочтительней, чем 302 редирект — в целях SEO).

Перенаправление всего сайта на новый домен:

Перенаправление страницы на новую:

Модуль перенаправления mod_rewrite

Незаменимым механизмом для изменения URL-ссылок “на лету” является модуль mod_rewrite. Его полезность, а вместе с тем, сложность заключается в том, что можно использовать несметное количество правил, включающих еще больше переменных.

Для работы модуля, прежде всего, нужны директивы:

RewriteEngine On (включает работу механизма преобразования)

Options FollowSymLinks (условие для работы mod_rewrite).

Если администратор сервера отключил данную опцию для директории пользователя, то невозможно использовать механизм преобразования. Такое ограничение накладывается на серверах виртуального хостинга в целях безопасности.

Для дальнейшего ознакомления с модулем рекомендуем обратиться к первоисточнику.

RewriteRule

Одной из самых функциональных директив модуля mod_rewrite является RewriteRule. Для того чтобы указать условие, при котором будет работать правило, используется директива RewriteCond. Она (одна или несколько) обязательно прописывается перед RewriteRule.

Перенаправление страницы на новый домен:

Перенаправление сайта с домена без www на домен с www:

Эти строки необходимо разместить в самом верху .htaccess.

Определение кодировки

Таблицу символов, в которой следует открыть сайт, определяет браузер. Однако, можно задать кодировку по умолчанию:

Такое изменение распространяется в пределах действия .htaccess и на все страницы сайта. Можно задать кодировку для определенного типа файла, например windows-1251 для html:

Часто сама страница несет в себе (а именно в заголовке) информацию об используемой кодировке. Нужно проверить, чтобы указанная кодировка в документе и в конфигурационном файле совпадали. Приведенная здесь utf-8 практически всегда требуется при работе популярных cms, так как они рассчитаны на большой круг пользователей по всему миру. Кстати, по умолчанию эта же кодировка настроена и на наших серверах виртуального хостинга.

Другие возможности

По умолчанию индексной страницей считается index.html. С помощью следующей директивы можно задать другое название файла, который отрывается первым при обращении к каталогу:

Есть некоторые директивы, которые не поддерживаются на наших серверах с виртуальным хостингом, но вы можете их разрешить на своем ВПС.

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

Если .htaccess не работает

Если проблема действительно существует, нужно в первую очередь искать причину в главном конфигурационном файле:

И еще несколько советов по работе с .htaccess

Хотя изменения и сразу вступают в силу, кэш браузера никто не отменял. Для проверки работы сайта после редактирования .htaccess регулярно пользуйтесь его очисткой или загружайте страницу в обход кэша — через комбинацию клавиш Ctrl + F5 (в Safari: Ctrl + R, в Mac OS: Cmd + R).

Самая распространенная ошибка веб-сервера при работе с .htaccess — 500. Она указывает на проблему в синтаксисе (опечатка в директиве, например), либо же в главном конфигурационном файле не разрешен такой тип директивы.

Полезные ссылки

Лучший источник вдохновения для работы с .htaccess:

Многие инструкции по работе с .htacess, на русском:

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

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

Читайте также: