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

Published by Leave your thoughts

Что такое файл .htaccess?

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

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

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

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

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

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

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

Или же можно создать такой файл с помощью терминала; для этого используйте следующую команду, заменив example.com именем сайта.

sudo nano /var/www/example.com/.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 содержит текст, который будет отображаться в приглашении ввести пароль (можно ввести абсолютно любой текст).

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

Строка 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 on

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

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

Итоги

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

Tags: , , , , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>