- Настройка файла .htaccess
- Подключение файла .htaccess
- Создание файла .htaccess
- Использование файла .htaccess
- Управление доступом
- Аутентификация
- Сообщения об ошибках
- Описание типов MIME
- Серверные включения
- Редирект
- Модуль Mod_Rewrite
- Управление кэшированием данных
- Заключение
- Использование файла .htaccess
- Что такое файл .htaccess?
- Особенности файлов .htaccess
- Как включить файл .htaccess?
- Создание файла .htaccess
- Общие случаи использования .htaccess
- 1. Mod_Rewrite
- 2. Аутентификация
- 3. Пользовательские страницы ошибок
- 4. MIME-типы
- 5. SSI
- Итоги
Настройка файла .htaccess
Файл .htaccess позволяет настраивать веб-сайт на сервере Apache без необходимости изменять файлы конфигурации сервера. В данном руководстве мы рассмотрим наиболее распространенные примеры его использования. Однако, прежде чем перейти к работе с этим файлом, необходимо сделать важное замечание. Несмотря на то, что страница .htaccess может быть очень полезной и существенно улучшить сайт, у нее есть два фактора негативного влияния:
1. Скорость — страница .htaccess может немного замедлить работу вашего сервера, хотя для большинства серверов это изменение будет незаметным. Это связано с расположением страницы: она влияет на все страницы в своей директории и в ее поддиректориях. При каждой загрузке страницы сервер сканирует ее директорию и все директории выше, пока не дойдет до верхнего уровня или файла .htaccess. Эти действия выполняются всегда, когда параметр AllowOverride (о нем чуть ниже) разрешает использование файлов .htaccess, независимо от того, существуют ли эти файлы на самом деле.
2. Безопасность — файл .htaccess гораздо доступнее стандартной конфигурации Apache, а изменения вносятся мгновенно (без необходимости перезапуска сервера). Предоставление пользователям права внесения изменений в файл .htaccess предоставляет им значительный контроль над самим сервером. Любая директива в файле .htaccess действует так же, как директива в самой конфигурации Apache.
В целом Apache не рекомендует использовать файл .htaccess, если пользователь сам может работать с файлами конфигурации Apache.
Подключение файла .htaccess
Если у вас есть доступ к настройкам сервера, вы можете изменить конфигурацию, чтобы разрешить использование .htaccess вместо стандартной конфигурации веб-сайта. Откройте файл конфигурации узла apache2 по умолчанию (для этого вам потребуются привилегии суперпользователя):
Найдите в этом файле следующий раздел и измените значение параметра AllowOverride c None на All. В конечном итоге раздел должен выглядеть так:
Сохраните и закройте этот файл, а затем перезапустите apache.
Создание файла .htaccess
Файл .htaccess можно создать в любом текстовом редакторе, например:
Убедитесь, что его имя строго .htaccess, а затем при помощи ftp-клиента загрузите его на сайт.
Использование файла .htaccess
Использование файла .htaccess не требует таких высоких привилегий, как доступ файлу apache2.conf, но при этом позволяет осуществлять эффективное управление сайтом. Далее мы рассмотрим ряд примеров применения этого файла.
Управление доступом
Файл .htaccess может применяться для гибкого разграничения доступа к вашему сайту или отдельным его страницам. Один из типичных вариантов – запрет доступа с определенных IP-адресов, например, следующий код запрещает доступ со всех адресов, кроме 192.168.1.1. Это полезно при обслуживании сайта, когда требуется закрыть доступ для всех, кроме администратора.
Директива Order указывает порядок выполнения следующих директив (сначала Allow — разрешение, затем Deny — запрет). Deny from All запрещает доступ вообще, но так как в соответствии с порядком выполнения сначала разрешен доступ с адреса 192.168.1.1, запрет будет действовать для всех, кроме указанного адреса. Вместо IP-адресов можно указывать подсети (например, формат 192.168 означает подсеть 192.168.x.x) или доменные имена.
Аутентификация
Использование .htaccess позволяет выделить определенную часть сайта и защитить ее паролем. Пароли .htaccess хранятся в файле .htpasswd. Создайте файл, внесите в него имена и пароли всех пользователей, которым вы хотите предоставить доступ к защищенной части сайта, и сохраните его. Файл не должен находиться в веб-директории (по соображениям безопасности). Введите в этот файл любое необходимое количество записей в формате пользователь:пароль. Для каждого пользователя нужно создать отдельную строку. Пароль должен быть указан в закодированном виде. Для кодирования паролей можно воспользоваться специальным сайтом или программой htpasswd, которая входит в комплект установки Apache. Для создания файла и добавления пользователей с помощью утилиты httpasswd используйте команду
Эта команда создаст пользователя admin и запросит ввести пароль для него. После ввода пароля запись в файл .htpasswd будет добавлена.
После этого нужно разместить файл .htaccess в директории, к которой требуется защитить доступ, и ввести в него следующий код:
AuthUserFile /usr/local/username/safedirectory/.htpasswd
AuthGroupFile /dev/null
AuthName «Пожалуйста, введите пароль»
AuthType Basic
Require valid-user
Рассмотрим значение этих параметров:
AuthUserFile: путь к файлу .htpasswd на сервере
AuthGroupFile: эта строка используется для обозначения месторасположения файла .htgroup. Так как мы его не создавали, можем указать здесь /dev/null.
AuthName: Текст, отображаемый в предложении ввести пароль.
AuthType: Тип аутентификации, используемый для проверки пароля. При проверке паролей через HTTP нужно оставить значение Basic.
Require valid-user: Ключевая фраза, которая указывает файлу .htaccess наличие нескольких пользователей, которым требуется обеспечить возможность входа в защищенную паролем часть сайта. Другой возможный вариант – ключевая фраза «require user username», обозначающая конкретного пользователя с разрешенным доступом.
Сообщения об ошибках
Файл .htaccess позволяет вам создавать для своего сайта собственные страницы, сообщающие об ошибках. Вот некоторые из наиболее распространенных ошибок:
400 Ошибка в запросе
401 Требуется авторизация
403 Доступ запрещен
404 Файл не найден
500 Внутренняя ошибка сервера
Можно воспользоваться файлом .htaccess для создания собственных страниц, которые будут более дружественны к пользователю и предоставлять больше информации, чем стандартные сообщения сервера об ошибках.
Для примера мы рассмотрим страницу 404, аналогичным образом можно описать в файле .htaccess страницы для других ошибок. Естественно, сначала нужно создать саму страницу с необходимой информацией и загрузить ее на сервер. Затем укажите ее месторасположение в файле .htaccess:
В рассматриваемом примере сервер будет искать страницу 404 в корневой директории сайта. Если она находится в какой-либо поддиректории, нужно указать путь, например:
Описание типов MIME
Если на вашем сайте есть файлы каких-либо приложений, для отображения которых ваш сервер не настроен, в файле .htaccess можно описать типы MIME при помощи следующего кода, чтобы браузер отображал их в необходимом формате:
В данном примере для файлов с расширением .m4a задано представление в виде аудиозаписей. Для поддержки других типов MIME укажите соответствующий тип и расширение файла.
Серверные включения
Серверные включения (Server Side Includes, SSI) позволяют добиться значительного повышения скорости открытия сайта. Они представляют собой директивы для динамической генерации данных на странице сервером перед ее отправкой клиенту. Один из наиболее распространенных вариантов использования SSI – обновление большого количества страниц с передачей определенных данных вместо обновления каждой страницы по отдельности (например, если вам нужно заменить цитату в нижней части страницы).
Для использования SSI введите в файл .htaccess следующий код:
Первая строка задает интерпретацию файлов с расширением .shtml как html-кода, а вторая – обработку таких файлов с любыми командами SSI на сервере.
Однако, если у вас много страниц .html, и вы не хотите менять расширение, для их обработки команд SSI в этих файлах можно воспользоваться XBitHack. Следующая строка в файле .htaccess заставляет сервер проверять все html-файлы с соответствующими разрешениями на наличие SSI:
Для того, чтобы установить необходимые для XBitHack разрешения, воспользуйтесь командой:
Редирект
Эти директивы используются с завидной регулярностью. Они позволяют перенаправить посетителя со старого URL на новую страницу. Это возможно благодаря 301-редиректу. Достаточно в код файла вписать:
В целом директива будет отображена в таком виде:
URL_LOCAL – это старый адрес, с которого осуществляется перенос пользователя.
URL_REDIRECT – новый URL, куда переносится страница.
В поле [status] могут быть следующие значения:
301 – страница перенесена навсегда.
302 – страница перенесена на время.
303 – смотрите другую страницу.
410 – страница удалена.
Модуль Mod_Rewrite
Одна из наиболее полезных функций файла .htaccess – его использование с модулем mod_rewrite, который применяется для перезаписи URL, отображаемых в браузере пользователя. Это может использоваться для их представления в более удобочитаемом формате и других задач, например, редирект с http на https можно настроить следующим образом.
Первая строка активирует модуль Mod_Rewrite, а две последующие при попытке соединения по отличному от 443 порту переписывают URL, чтобы он начинался не с HTTP, а c HTTPS, перенаправляя посетителя на защищенное соединение.
Управление кэшированием данных
Файл .htaccess можно использовать для задания различных сроков кэширования контента вашего сайта. Целесообразно увеличить срок кэширования для редко меняющихся данных, чтобы ускорить загрузку сайта. Например, следующий код
отключает кэширование для HTML, для изображений JPEG устанавливает срок в 1 день с момента обращения, а для GIF — 3 месяца с момента модификации файла.
Заключение
Страница .htaccess обеспечивает значительную гибкость при создании сайтов, но наше руководство достаточно краткое. Более подробную информацию о возможностях файла .htaccess можно получить в документации для сервера Apache.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Использование файла .htaccess
Что такое файл .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. Раздел должен выглядеть так:
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Сохраните и закройте файл, а затем перезапустите 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, введите:
chmod +x имя_страницы.html
Итоги
Данное руководство охватывает лишь основные функции страницы .htaccess, которые, тем не менее, делают работу с сайтом гораздо более гибкой. При возникновении каких-либо вопросов или дополнений о возможностях файла .htaccess, пожалуйста, оставьте свой комментарий.
Источник