Где находится htaccess в ubuntu

Обновлено: 03.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, пожалуйста, оставьте свой комментарий.

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

Основной конфигурационный файл Apache в Ubuntu 16.04 и новее находится по адресу:

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

Синтаксис apache.conf и .htaccess.

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

Синтаксис apache.conf и .htaccess

Если вам не нравится gedit, замените его любым другим текстовым редактором (например, nano). Можно обойтись без sudo, но в этом случае вы, скорее всего, сможете только просматривать содержимое файла, но не изменять его.

Не лишним будет определить директиву ServerName. Стандартное значение — 127.0.0.1.

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

Синтаксис apache.conf и .htaccess

Давайте выясним, что они означают.

AllowOverride None запрещает использование файлов .htaccess в данной директории. Чтобы разрешить перезаписывать любые параметры, замените None на All. Вы также можете указать группы настроек, разрешенных к перезаписи. Например, чтобы разрешить только те директивы из .htaccess, которые меняют режим доступа, следует указать AllowOverride AuthConfig.

Require all granted разрешает доступ к директории для всех без исключений. В более ранних версиях Apache применялся другой вариант — Allow from all, имеющий то же значение.

Как запретить или ограничить доступ к директории?

Начиная с версии Apache 2.4 для регулирования доступа к директории используется директива Require. Она может располагаться как в глобальном файле настроек, так и в любом .htaccess. Раньше те же функции выполняли Order, Allow и Deny.

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

Полностью запретить доступ надоедливому или регулярно вредящему пользователю можно таким образом:

Require not ip 123.456.789.012

подставив его ip вместо чисел.

Если убрать из этой конструкции not, доступ будет разрешен только с указанного ip. Можно также указать имя разрешенного или запрещенного хоста, указав вместо ip host.

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

После сохранения файла не лишним будет проверить его синтаксис — вдруг в процессе редактирования мы допустили ошибку или сделали опечатку? Для этого введем команду:

Как запретить или ограничить доступ к директории

При обнаружении ошибки будут указаны сведения о ней.

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

В следующих статьях я продолжу рассказывать о связке LAMP.

Если вы хотите прочесть о каком-то конкретном аспекте этой темы, напишите в комментариях.

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

Соображения

Этот файл невероятно полезен и может значительно улучшить производительность вашего сайта. Однако перед использованием файла .htaccess необходимо учитывать несколько моментов. Это включает в себя:

Это влияет на скорость сервера

Проблемы с безопасностью

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

Имея это в виду, давайте теперь сосредоточимся на основах файла .htaccess:

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

Как уже упоминалось, файл .htaccess может быть создан с помощью любого текстового редактора, а затем загружен на ваш сайт через FTP-клиент. Либо выполните команду ниже, чтобы создать этот файл в терминале:

Активация файла .htaccess

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

Сначала выполните команду ниже, чтобы открыть файл конфигурации хоста для Apache2:

Замечания: Для этого вам нужны разрешения sudo

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

После того, как файл конфигурации открыт, найдите раздел ниже:

Опции Индексы FollowSymLinks MultiViews
не AllowOverride None
Заказ разрешить, запретить
разрешить от всех

Измените значение AllowOverride с никто в все.

Опции Индексы FollowSymLinks MultiViews
AllowOverrideAll
Заказ разрешить, запретить
разрешить от всех

Сохраните файл и выйдите из текстового редактора. Теперь выполните команду ниже, чтобы перезапустить ваши службы Apache:

$ Sudo service apache2 restart

Использование файла .htacces

Файл .htaccess имеет несколько применений, включая:

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

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

Чтобы настроить перенаправления с помощью файла .htaccess, добавьте в этот файл следующую строку.

Эта команда выше указывает веб-серверу Apache отображать документ в innew_dirКаждый раз, когда посетитель запрашивает документ в старом каталоге; «old_dir».

ErrorDocument 401 /error_pages/401.html
ErrorDocument 404 /error_pages/404.html
ErrorDocument 500 /error_pages/500.html

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

ErrorDocument 404 /error_pages/new404.html

Защита паролем

Более того, файл .htaccess предлагает невероятные системы аутентификации и защиты паролем. Пароли для .htaccess хранятся в файле; .Htpasswd. Создайте этот файл и сохраните его где угодно, а не в веб-каталоге (по соображениям безопасности).

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

AuthUserFile /usr/local/username/safedirectory/.htpasswd
AuthGroupFile / dev / null
AuthName "Пожалуйста введите пароль"
AuthType Basic
Требуется действительный пользователь

Включения на стороне сервера (SSI)

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

Чтобы активировать Включения на стороне сервера, добавьте приведенный ниже код в файл .htaccess:

AddType text / html .shtml
AddHandler-серверный .shtml

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

Вывод

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

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

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

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

Синтаксис файла htaccess

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

Все директивы из файла htaccess выполняются точно так же, как если бы они были размещены в глобальном конфигурационном файле, только внутри директивы <Directory адрес_папки_htaccess>. Это не позволяет менять глобальные настройки, но вы можете очень тонко настроить поведение программы в папках, к которым у вас есть права доступа.

Общий синтаксис директив очень прост, это пары команд и их опций, разделенных пробелом, например:

Команда параметр1 параметр2 флаги

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

Настройка доступа htaccess

Довольно часто htaccess используется для управления доступом к папке. Для управления доступом используются три команды:

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

Затем с помощью директивы allow или deny мы разрешаем или запрещаем доступ к папке с определенных адресов. Например, чтобы запретить все необходимо добавить в htaccess:

Order deny,allow
Deny from all

Но мы также можем разрешить доступ только с локальной сети:

Order deny,allow
Deny from all
Allow 192.168.0.

Если указано deny,allow, то проверка будет выполняться в таком порядке. Сначала все директивы deny, затем все директивы allow, и если ни одно из условий не подошло, то запрос пропускается.При allow,deny такой запрос будет по умолчанию отклонен. Например, предыдущий пример можно написать так:

Order allow,deny
Allow 192.168.0.

Модификация URL в htaccess

Наиболее часто htaccess используется для модификации URL во время выполнения или редиректов. За эту функциональность отвечает модуль mod_rewrite и обычно он активирован в большинстве конфигураций Apache.

Модификация URL в htacces выполняется с помощью трех директив, это RewriteBase, которая указывает префикс адреса, RewriteCond проверяет соответствие, и RewriteRule - изменяет URL в соответствии с регулярным выражением если все правила соответствия подходят.

Сначала нужно включить Mod_Rewrite, на случай если модуль еще не активен:

Укажем, что в качестве префикса для URL нужно использовать корень:

И будем автоматически заменять URL адреса с index.html на index.php, обратите внимание, что исходный URL - это путь к запрашиваемому файлу относительно расположения файла htaccess:

RewriteRule index.html /index.php

Для более эффективной замены можно использовать регулярные выражения они состоят из специальных символов и переменных и обычных символов и цифр. Рассмотрим основные специальные символы:

  • ^ - начало строки;
  • $ - конец строки;
  • . - любой символ;
  • * - любое количество любых символов;
  • ? - один определенный символ;
  • 2 - последовательность символов, например, от 0 до 9;
  • | - символ или, выбирается или одна группа, или другая;
  • () - иcпользуется для выбора групп символов.

В регулярных выражениях htaccess также можно использовать переменные с данными, полученными из заголовков запроса, например:

  • % - поле User-Agent, которое передает браузер пользователя;
  • % - IP адрес пользователя;
  • % - запрашиваемый URI;
  • % - параметры запроса после знака ?.

Это наиболее часто используемые переменные, но их есть намного больше, остальные вы можете найти в официальной документации. Регулярные выражения открывают более широкие возможности, например, вы можете заменять во всех страницах html на php:

RewriteEngine On;
RewriteBase /;
RewriteRule ^(.*)\.html$ $1.php

Директива RewriteCond дает еще больше гибкости, вы можете выбрать к каким адресам стоит применять модификацию, например, будем переопределять данные только для версии с www:

Таким образом, вы можете выполнять любые преобразования ваших URL без фактических редиректов куда-либо. Но дальше мы рассмотрим как делать редиректы.

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

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

Самый простой редирект можно выполнить без mod_rewrite, с помощью такой строки:

Но обычно нужны перенаправления с более широким действием. Все выглядит очень похоже, только теперь мы используем флаг [NC] чтобы не учитывать регистр, [L] для прекращения обработки и [R] - для редиректа. Например, перенаправление htaccess с версии без www на домен с www:

Значение R=301 означает код редиректа, который будет возвращен клиенту, можно использовать 301, 302 и т д. Редирект htaccess с домена www на домен без префикса будет выглядеть так:

Таким же образом можно сделать переадресацию:

RewriteRule ^старый_адрес /новый_адрес/$1 [R=301,L]

Настройка страниц ошибок в htaccess

Настройка htaccess для этого пункта будет очень полезной. Вы можете использовать директиву ErrorDocument. С помощью нее можно задать html страницы для ошибок 4хх и 5хх. Например, для 404:

Кэширование в htaccess

Браузер позволяет хранить в своем кэше изображения, файлы скриптов, стилей и другие медиафайлы определенное время. Время жизни кэша задается веб-сервером с помощью специальных заголовков. Их можно настроить с помощью модуля expires.

Сначала активируем модуль и устанавливаем период кэширования по умолчанию:

ExpiresActive On
ExpiresDefault "access plus 1 month"

Теперь мы можем настроить кэширование для каждого mime типа файлов:

ExpiresByType text/html "access plus 1 month 15 days 2 hours"
ExpiresByType image/gif "access plus 5 hours 3 minutes"
ExpiresByType image/x-icon "access plus 2592000 seconds"

В первой строке мы указываем, что страницы html нужно считать годными на один месяц 15 дней и два часа с момента загрузки. Доступны такие типы файлов:

  • image/x-icon;
  • image/jpeg;
  • image/png;
  • image/gif;
  • application/x-shockwave-flash;
  • text/css;
  • text/javascript;
  • application/javascript;
  • application/x-javascript;
  • text/html;
  • application/xhtml+xml;

Чтобы быть уверенным что эта конструкция не вызовет ошибок заключите ее в if:

<ifModule mod_expires.c>
</ifModule>

Сжатие файлов в htaccess

Для сжатия в Apache можно использовать модуль deflate. Здесь достаточно просто перечислить mime типы файлов, которые нужно сжать. Например:

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript

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

<ifModule mod_deflate.c>
</ifModule>

Выводы

На завершение предлагаю видео с обзором конфигурационного файла Apache:

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