Файл .htaccess используется для веб-сервера Apache как способ настройки деталей вашего сайта без изменения конфигурационных файлов сервера. Этот файл начинается с точки, чтобы обозначить, что он скрыт в папке. Файл .htaccess можно использовать для загрузки настраиваемых страниц ошибок (например, страниц 404), создания перенаправлений URL, реализации защищенной паролем аутентификации для определенных каталогов на вашем сервере и многого другого.
В этом руководстве вы узнаете, как включить, создать и использовать файл .htaccess, а также о некоторых распространенных вариантах его использования и его влиянии на скорость и безопасность.
Включение файла .htaccess
Если у вас есть доступ к настройкам сервера, вы можете отредактировать конфигурацию Apache, чтобы разрешить файлу .htaccess переопределять стандартные настройки сайта.
Для начала откройте файл виртуального хоста apache2/sites-available/your_domain.conf в удобном для вас текстовом редакторе. Здесь мы будем использовать nano:
1 | sudo nano /etc/apache2/sites-available/[your_domain].conf |
Этот файл будет содержать примерно следующий текст:
1 2 3 4 5 6 | ServerAdmin webmaster@localhost ServerName [your_domain] ServerAlias www.[your_domain] DocumentRoot /var/www/[your_domain] ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined |
Добавьте следующий блок содержимого Directory в блок VirtualHost:
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName [your_domain] ServerAlias www.[your_domain] DocumentRoot /var/www/[your_domain] ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/[your_domain]> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> |
Самая важная строка этого блока содержимого Directory - AllowOverride All, которая разрешает использование файлов .htaccess. После того как вы добавили эту информацию, сохраните и закройте файл. Если вы используете nano, вы можете сделать это, нажав CTRL + X, затем Y и ENTER.
Далее перезапустите Apache:
1 | sudo service apache2 restart |
Теперь, когда ваши настройки конфигурации обновлены и позволяют использовать файлы .htaccess, на следующем этапе вы создадите один из них.
Создание файла .htaccess
Чтобы создать файл .htaccess в терминале, вам нужно перейти в корневой каталог вашего сайта. Корневой каталог сайта - это место, где нужно разместить файл .htaccess, чтобы ваши конфигурации могли быть правильно выполнены для вашего сайта. Правильное размещение файла .htaccess очень важно, так как конфигурации в этом файле влияют на все, что находится в его каталоге и в каталогах после него. Это означает, что если вы обслуживаете несколько различных сайтов на одном сервере Apache, ваш файл .htaccess должен быть размещен в корневом каталоге сайта, предназначенном для конкретного сайта.
Если вы выполнили все необходимые условия, ваш корневой каталог будет находиться в следующем месте: /var/www/[your_domain]/.htaccess.Чтобы создать файл .htaccess для вашего сайта, выполните следующую команду:
1 | sudo nano /var/www/[your_domain]/.htaccess |
Общие области применения страницы .htaccess
Существует пять основных способов использования страницы .htaccess на вашем сайте:
Mod_Rewrite
Одним из наиболее полезных аспектов файла .htaccess является mod_rewrite. Вы можете использовать файл .htaccess для определения и изменения того, как URL-адреса и веб-страницы на ваших сайтах отображаются для ваших пользователей. Подробнее о том, как это сделать, вы можете узнать из нашего руководства "Как настроить mod_rewrite".
Аутентификация
Чтобы настроить аутентификацию безопасности с помощью .htaccess, вы можете создать файл паролей .htpasswd для аутентификации пользователей. Это изменение создаст портал паролей, который предложит посетителям сайта ввести пароль, если они хотят получить доступ к определенным разделам веб-страницы. При создании этого файла убедитесь, что в целях безопасности он хранится не в каталоге web.
Чтобы создать файл, выполните команду htpasswd и включите опцию -c, а также имя пользователя для создания указанного файла htpasswd. После этого появится запрос на ввод пароля. Вы можете вставить в файл htpasswd столько строк, сколько необходимо, но убедитесь, что каждый пользователь получает свою собственную строку. В следующем примере показано, как создать новую запись в файле, в данном случае для пользователя sammy:
1 | sudo htpasswd -c /etc/apache2/.htpasswd user |
Вы можете проверить содержимое этого файла, выполнив команду cat /etc/apache2/.htpasswd, и она выведет имя пользователя и зашифрованный пароль для каждой добавленной вами записи.
После того как вы добавили желаемого пользователя (пользователей), откройте файл .htaccess. Если вы следовали руководству по предварительным условиям, он будет расположен в следующем месте:
1 | sudo nano /var/www/[your_domain]/.htaccess |
Имейте в виду, что в этом примере мы ограничиваем весь корень документа на основе /var/www/[your_domain], но этот файл может быть размещен в любой директории, к которой вы хотите ограничить доступ.
Открыв этот файл, добавьте следующее содержимое и сохраните изменения, чтобы начать использовать функцию пароля:
1 2 3 4 | AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user |
Чтобы узнать больше, прочитайте наш учебник "Как настроить аутентификацию по паролю в Apache".
Пользовательские страницы ошибок
Файл .htaccess дополнительно позволяет создавать пользовательские страницы ошибок для вашего сайта. Вот некоторые из наиболее распространенных ошибок:
- 400 Плохой запрос
- 401 Требуется авторизация
- 403 Запрещенная страница
- 404 Файл не найден
- 500 Внутренняя ошибка
Чтобы сделать страницу удобной для пользователя и предоставить посетителю сайта больше информации, чем предлагает стандартная страница ошибок сервера, вы можете использовать файл .htaccess для создания пользовательских страниц ошибок. Подробнее читайте в нашем руководстве "Как настроить Apache на использование пользовательских страниц ошибок".
Типы MIME
В случаях, когда на вашем сайте есть некоторые файлы приложений, которые ваш сервер не был настроен для доставки, вы можете добавить типы Multipurpose Internet Mail Extensions (MIME) на ваш сервер Apache в файл .htaccess со следующим кодом:
1 | AddType audio/mp4a-latm .m4a |
Обязательно замените расширение приложения и файла на тип MIME, который вы хотите поддерживать. В данном примере мы указали MIME-тип аудиофайла.
SSI
Включения на стороне сервера (SSI) значительно экономят время на сайте. Одно из наиболее распространенных применений SSI - обновление большого количества страниц с определенными данными без необходимости обновлять каждую страницу по отдельности. Например, если вы хотите изменить цитату в нижней части страницы.
Чтобы включить SSI, вставьте следующий код в файл .htaccess:
1 2 | AddType text/html .shtml AddHandler server-parsed .shtml |
Эти строки говорят .htaccess, что файлы .shtml являются допустимыми, а вторая строка специально заставляет сервер разбирать все файлы, заканчивающиеся на .shtml, для любых SSI-команд.
Однако если у вас много .html-страниц, которые вы не хотите переименовывать с расширением .shtml, вы можете использовать другую тактику для их разбора на наличие SSI-команд - XBitHack.
Вы можете использовать тактику XBitHack, добавив следующую строку в файл .htaccess, чтобы заставить Apache проверить все файлы .html с соответствующими разрешениями для SSI:
1 | XBitHack on |
Чтобы сделать страницу пригодной для XBitHack, используйте команду chmod для изменения разрешений:
1 | chmod +x pagename.html |
Скорость и безопасность при использовании файлов .htaccess
Несмотря на то, что файл .htaccess может быть использован для улучшения сайта, есть две вещи, на которые он может повлиять: скорость и безопасность.
Что касается скорости, файл .htaccess может замедлить работу вашего сервера, но для большинства серверов это, скорее всего, будет незаметным изменением. Это может быть связано с расположением страницы, поскольку файл .htaccess влияет на страницы в своем каталоге и во всех каталогах после него. Это означает, что каждый раз при загрузке страницы сервер сканирует ее каталог и все предшествующие ему каталоги, пока не достигнет самого верхнего каталога или файла .htaccess. Этот процесс будет происходить до тех пор, пока директива AllowOverride разрешает использование файлов .htaccess, как было показано на этапе включения файла .htaccess; независимо от того, существуют ли файлы .htaccess на самом деле.
В целях безопасности файл .htaccess гораздо более доступен, чем стандартная конфигурация Apache, а изменения вносятся мгновенно (без необходимости перезапуска сервера). Это дает пользователям право вносить изменения в файл .htaccess, предоставляя им большой контроль над самим сервером. Любая директива, помещенная в файл .htaccess, имеет тот же эффект, что и в конфигурации самого Apache. Важно также отметить, что Apache обычно не рекомендует использовать .htaccess, если пользователь может получить доступ к конфигурационным файлам Apache.
Заключение
Файл .htaccess дает вам большую гибкость при создании вашего сайта. Чтобы узнать больше о защите вашего сайта, прочитайте наше руководство по настройке аутентификации пароля в Apache.