Возможности файла .htaccess

Изменено Sat, 11 May 2024 на 05:30 PM

Файл .htaccess (HyperText Access) предназначен для изменения настроек сервера для конкретной директории и ее поддиректорий. Это специфический файл для сервера Apache, он не будет работать с Nginx или Microsoft IIS.

ЗАЧЕМ НУЖЕН ФАЙЛ .HTACCESS

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

  • установка правил обработки URL-адресов, а также настройка перенаправлении;

  • настройка авторизации;

  • ограничение доступа с определённых IP-адресов и браузеров;

  • настройка страниц ошибок;

  • управление кодировкой;

  • передача дополнительных заголовков;

  • настройка PHP.

  • и д.р.

ГДЕ НАХОДИТСЯ ФАЙЛ .HTACCESS

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

НАСТРОЙКИ ФАЙЛА .HTACCESS

ИЗМЕНЕНИЕ ГЛАВНОЙ СТРАНИЦЫ

Изменить главную страницу сайта можно посредством директивы DirectoryIndex. Для этого в .htaccess указывается имя файла главной страницы.

Например:

DirectoryIndex index.php index.html

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

ИЗМЕНЕНИЕ СТРАНИЦЫ ОШИБОК

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

ErrorDocument 403 /403.html ErrorDocument 404 /404.html ErrorDocument 500 /500.html

В этом примере, мы указали какие файлы сайта использовать для показа 403, 403 и 500 ошибки.

УСТАНОВКА КОДИРОВКИ

Чтобы установить кодировку через .htaccess, можно использовать директиву AddDefaultCharset.

AddDefaultCharset UTF-8

В данном случае для сайта будет установлена отдача страниц в кодировке UTF-8. Кодировку также можно изменить с помощью php_value для PHP.

php_value default_charset utf-8

НАСТРОЙКА ПЕРЕАДРЕСАЦИИ В .HTACCESS

Настроить перенаправление можно с помощью Redirect и правил mod_rewrite. 

ИЗМЕНЕНИЕ НАСТРОЕК PHP

С помощью php_value в файле .htaccess можно изменять настройки PHP, например:

  • объём памяти для выполнения скрипта;

  • времени выполнения скрипта;

  • размера загружаемого файла.

НАСТРОЙКИ КЭШИРОВАНИЯ В .HTACCESS

Правильно настроенное кэширование в .htaccess уменьшит нагрузку на сервер и ускорит отдачу страниц сайта для пользователей. Рассмотрим несколько способов, как можно настроить кэширование в .htaccess.

<IfModule mod_expires.c>    # Включаем кэширование    ExpiresActive On    # Устанавливаем время жизни кэша для статических файлов    ExpiresByType image/jpeg "access plus 1 year"    ExpiresByType image/png "access plus 1 year"    ExpiresByType image/gif "access plus 1 year"    ExpiresByType image/x-icon "access plus 1 year"    ExpiresByType text/css "access plus 1 month"    ExpiresByType text/javascript "access plus 1 month"    ExpiresByType application/javascript "access plus 1 month" </IfModule>

Этот код включает модуль mod_expires, который позволяет установить время жизни кэша для статических файлов (изображения, стили и скрипты). В примере мы установили время жизни кэша на 1 год для изображений и на 1 месяц для стилей и скриптов.

Если на сервере нет модуля mod_expires, то можно использовать mod_headers. Создайте файл .htaccess в каталоге с изображениями и пропишите в него следующие правила.

 # Включаем кэширование <IfModule mod_headers.c>    # Устанавливаем время жизни кэша на 1 день    Header set Cache-Control "max-age=86400, public" </IfModule>

В этом примере мы установили кэширование всех файлов в каталоге на 86400 секунд (24 часа).

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

ЗАЩИТА КАТАЛОГА ПАРОЛЕМ

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

# Указываем тип авторизации AuthType Basic # Указываем путь к файлу для хранения списка пользователей AuthUserFile /var/www/.htpasswd # Указываем, что авторизированный пользователь будет иметь доступ Require valid-user

Для создания файла с пользовательскими данными можно использовать утилиту htpasswd, которая включена в Apache. Например, для создания файла .htpasswd с пользователем admin и паролем password в директории /var/www, можно использовать следующую команду:

htpasswd -c /var/www/.htpasswd admin

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

ЗАПРЕТ ДОСТУПА ПО IP-АДРЕСУ

При необходимости в .htaccess директивой Deny from можно закрыть доступ определённым IP-адресам. 

# Ограничение доступа с IP-адреса 127.0.0.1 Deny from 127.0.0.1 # Ограничение доступа для подсети 127.0.0.1/24 Deny from 127.0.0.1/24 # Ограничение доступа для всех IP-адресов Deny from all

ОГРАНИЧЕНИЕ ДОСТУПА ПО USER AGENT В .HTACCESS

Защитить сайт от роботов и ботов можно через файл .htaccess. Для этого нужно воспользоваться блокировкой по браузеру (User Agent).

RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (bot|crawl|spider) [NC] RewriteRule .* - [F]

Этот код блокирует любой запрос, который содержит слова bot, crawl или spider в заголовке HTTP_USER_AGENT (обычно в нём передаётся название браузера, либо бота / робота).

А здесь, мы перенаправляем всех пользователей, использующих браузер Internet Explorer на страницу /eol.html:

RewriteEngine on RewriteCond %{HTTP_USER_AGENT} MSIE RewriteCond %{REQUEST_URI} !^/eol.html$ RewriteRule ^(.*)$ /eol.html [R=301,L]

УПРАВЛЕНИЕ ПРОСМОТРОМ ФАЙЛОВ В КАТАЛОГЕ

При отсутствии в директории файла index.php или index.html, с помощью правил в файле .htaccess можно настроить просмотр файлов и каталогов, за это отвечает директива Options.

Например, чтобы запретить просмотр содержимого каталога, можно использовать правило:

Options -Indexes

Разрешить просмотр содержимого каталога:

Options +Indexes

ОГРАНИЧЕНИЕ ДОСТУПА К ФАЙЛАМ ПО ИХ РАСШИРЕНИЮ

В .htaccess можно запретить доступ к файлам с определённым расширением. Для этого используется директива <FilesMatch>.

Например, запретим доступ к файлам с расширением .php:

<FilesMatch "\.php$">  Order Allow,Deny  Deny from all </FilesMatch>

Аналогично можно разрешить доступ только к файлам с определённым расширением:

<FilesMatch "\.(html|txt)$">  Order Allow,Deny  Allow from all </FilesMatch>

Это правило разрешает доступ только к файлам .html и .txt.

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

РАСПРОСТРАНЁННЫЕ ОШИБКИ

Неверно прописанные правила в .htaccess могут привести к различным ошибкам:

  • 403 Forbidden: возникает, когда в .htaccess установлено правило запрета доступа к директории или файлу.

  • 404 Not Found: ошибка возникает, когда запрашиваемый адрес не найден. Это может произойти, если в .htaccess установлено перенаправление на несуществующую страницу или директорию, либо некорректно настроены правила mod_rewrite.

  • 500 Internal Server Error: может появиться, если в .htaccess файле есть синтаксическая ошибка, неправильно указан путь к файлу или директории, неверно указаны правила, а также при использовании модулей Apache, которые не установлены.

  • Циклическая переадресация (Infinite Loop Redirect): появляется, когда правило редиректа в .htaccess файле ведет к бесконечному циклу между страницами.

Статья помогла?

Отлично!

Спасибо за ваш отзыв

Извините, что не удалось помочь!

Спасибо за ваш отзыв

Расскажите, как мы можем улучшить эту статью!

Выберите хотя бы одну причину
Требуется проверка CAPTCHA.

Комментарий отправлен

Мы ценим вашу помощь и постараемся исправить статью