Файл .htaccess позволяет изменять многие настройки вашего сайта — как настройки веб-сервера Apache, так и опции PHP. Директивы, указанные в файле .htaccess, распространяются на ту директорию, в которой он находится, а также на все вложенные директории (за одним исключением, которое будет рассмотрено ниже), в том числе и на поддомены (поскольку директории поддоменов являются поддиректориями основного сайта).Как правило, файл .htaccess создается в корневой директории сайта и иногда в директориях, которые требуют специфического поведения веб-сервера (запрет отображение списка файлов, включение SSI, авторизация и прочее).

Вы можете самостоятельно создавать файл .htaccess с помощью FTP-клиента и работать с ним как с любыми другими файлами Вашего сайта.

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

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

Почему файл .htaccess, размещенный в корне сайта, не работает во вложенных директориях?

Это связано с оптимизацией обработки статических файлов.

Сайты обычно содержат большое количество статических файлов. Это файлы, которые не требуют запуска скриптов для их отображения: картинки, музыка, видео, css, javascript, простые html-страницы. Для ускорения работы сайтов они обрабатываются, минуя основной веб-сервер и без анализа файлов .htaccess.

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

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

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

Почему поддомен показывает ошибку?

Для поддомена наследуются настройки .htaccess домена. Если в настройках .htaccess домена используются правила mod_rewrite, они могут приводить к некорректной работе поддомена. Чтобы правила mod_rewrite домена не действовали на поддомен, необходимо добавить в файл .htaccess поддомена следующую строчку:

RewriteEngine off

По этой же причине не рекомендуется устанавливать приложения (Joomla, WordPress и т. п.) одновременно на сайт и на его поддомены. Это может привести к некорректной работе приложения, размещенного на поддомене.

Почему при открытии директории сайта в браузере показывается 403 Forbidden?

При открытии директории без указания конкретного файла веб-сервер ищет файлы index.htm, index.html, index.php для отображения (индексные файлы). Если индексные файлы отсутствуют, сервер возвращает ошибку 403 Forbidden, так как отображение списка файлов в директории по умолчанию запрещено.

Чтобы ошибка 403 Forbidden не отображалась, либо создайте в директории индексный файл, либо добавьте в файле .htaccess опцию:

Options +Indexes

Установка индексного файла для сайта

По умолчанию индексным файлом вашего сайта веб-сервер считает файл (в порядке приоритета): index.html, index.php.

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

DirectoryIndex имя_файла

Например, следующая инструкция предписывает веб-серверу при обращении к сайту открывать в качестве индексной страницы скрипт на языке Perl, размещенный в директории cgi-bin вашего сайта:

DirectoryIndex /cgi-bin/engine.pl

Как включить отображение ошибок PHP?

Для отображения ошибок PHP добавьте в файл .htaccess директиву:

php_value display_errors 1

Как изменить максимальный размер загружаемых файлов в PHP?

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

php_value upload_max_filesize 20M
php_value post_max_size 20M 

Вместо 20M укажите желаемый размер ограничения. Значение этих параметров не может быть больше 50M. Обратите внимание, что символ «M» (латинская M) указывается слитно со значением.

Как указать интерпретатору PHP необходимость обрабатывать не только файлы .php?

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

AddType application/x-httpd-php .phtml

Как изменить время хранения сессий PHP

Изменение времени хранения сессий может потребоваться, например, если вы хотите, чтобы данные об авторизации пользователей на вашем сайте сохранялись дольше. По умолчанию время хранения сессий — 1440 секунд (24 минуты), cookie с идентификатором сессии — до закрытия браузера пользователем.

Для изменения времени хранения сессий PHP необходимо внести несколько изменений в .htaccess. Так как конкретные настройки могут зависеть от особенностей работы вашего сайта с посетителями, рекомендуем перед внесением изменений проконсультироваться с профессиональным разработчиком. Возможно, непосредственно для вашего сайта более эффективным окажется альтернативный механизм хранения данных, привязанных к посетителю (например, только через cookie), либо альтернативный механизм хранения сессий PHP (установленный с помощью session_set_save_handler()).

Для изменения времени хранения сессий добавьте в .htaccess следующие директивы:

# Создайте отдельную директорию для хранения сессий вашего сайта,
# например, domains/ВАШ_САЙТ/tmp. Это необходимо, чтобы PHP не удалял сессии сайта
# при очистке старых сессий других сайтов, работающих на аккаунте.
# Установите директорию хранения сессий для сайта с помощью session.save_path.
php_value session.save_path /home/ВАШ_ЛОГИН/domains/ВАШ_САЙТ/tmp
# Установите максимальное время жизни сессии в секундах.
# 604800 - 1 неделя.
php_value session.gc_maxlifetime 604800
# Установите время жизни cookie, которая сохраняет идентификатор сессии
# в браузере пользователя.
php_value session.cookie_lifetime 604800

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

  • Указывать вложенность директорий хранения сессий с помощью аргумента N в session.save_path. Очищать старые сессии при этом необходимо собственными скриптами. Более подробная информация об этом методе находится в описании session.save_path в документации PHP.
  • Реализовать собственный механизм хранения сессий (например, в MySQL) и установить его с помощью session_set_save_handler().

Как включить SSI

Директивы SSI (Server Side Includes) по умолчанию обрабатываются в файлах с расширением .shtml (например, index.shtml). Чтобы SSI обрабатывались и в других файлах, необходимо в файле .htaccess указать следующие директивы:

AddType text/html .html .ssi
AddOutputFilter INCLUDES .html .ssi

Вместо «.ssi .html» укажите расширения файлов, в которых должны обрабатываться директивы SSI.

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

Как настроить выполнение скриптов CGI?

Для выполнения скриптов CGI в какой-либо папке необходимо настроить веб-сервер соответствующим образом с помощью файла .htaccess.

  1. В папке, в которой должны выполняться скрипты CGI, создайте файл .htaccess вида: Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    Вместо «.cgi .pl» укажите список расширений, которые должны обрабатываться как скрипты.
  2. Загрузите скрипты в папку.
  3. С помощью Вашего файлового менеджера установите файлам скриптов права на выполнение (755).

Как изменить ограничение на использование оперативной памяти в PHP?

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

php_value memory_limit 128M

Вместо 128M укажите желаемый размер ограничения. Обратите внимание, что символ «M» (латинская M) указывается слитно со значением.

Как сделать так, чтобы сайт всегда открывался по основному имени?

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

RewriteEngine on
 RewriteCond %{HTTP_HOST} ^www.site.com [NC] 
 RewriteRule ^(.*) http://site.com/$1 [L,R=permanent]  

Замените example.com на основное имя вашего сайта. Теперь при обращении к сайту пользователи будут автоматически перенаправлены на его основное имя.

Какие еще настройки PHP можно задавать в .htaccess?

В документации на сайте разработчика указан полный список директив PHP. В файле .htaccess можно изменять директивы, значение графы Changeable для которых соответствует PHP_INI_PERDIR или PHP_INI_ALL.