.htaccess — стандартное название локального файла конфигурации веб-сервера Apache. В отличие от главного файла конфигурации (обычно его зовут httpd.conf) действие .htaccess распространяется на ту директорию, где он расположен. Это позволяет создать особые настройки для одного сайта или даже для отдельной части сайта.1)
Как это работает? — На уровне представлений всё очень просто: при обращении по HTTP к какой-либо директории Apache проверяет наличие файла .htaccess и если он есть, подгружает его содержание к общей конфигурации. При этом замещаются значения параметров, которые есть в общей конфигурации, и добавляются отсутствующие.
В локальной конфигурации можно определять всё то же, что и в секции <VirtualHost> глобального файла конфигурации. Можно определять разрешения или запреты доступа по HTTP, можно разрешать или запрещать просмотр списка файлов в директории без индекса, можно назначать какой-либо файл индексом директории, можно добавлять директивы для подгружаемых модулей Apache. Самый популярный в этом отношении — модуль mod_rewrite. Можно также изменять настройки PHP.
Нельзя задать какие-то параметры конфигурации для других сайтов, размещенных на том же сервере — настройки работают только в данной директории и директориях, вложенных в неё. Если во вложенной директории есть свой файл .htaccess, его настройки вытесняют соответствующие настройки для вышележащей директории. Например, часто внутри корневой директории сайта есть отдельная директория с административной панелью, где могут быть совсем ненужными правила для псевдостатики. В этом случае достаточно в директории панели отключить преобразования (RewriteEngine off).
Возможность локальных настроек может быть ограничена. В общем файле конфигурации есть параметр AllowOwerride, которым для доменных директорий могут быть разрешены все настройки (значение All), только отдельные группы настроек (например, Options, FileInfo, AuthConfig, Limit), или вообще никакие (None). Поэтому механический перенос файла .htaccess на другой хостинг иногда может огорчить: «там всё работало, а здесь не хочет».
Не все правила для модулей работают в локальной конфигурации. Например, некоторые правила mod_rewrite, связанные не с регулярными выражениями, а с исполнением скриптов, допустимы только в глобальной конфигурации. Но такие возможности модуля и нужны обычно для проектов, размещенных на выделенном сервере.
А еще в .htaccess нельзя делать ошибок. Ошибки синтаксиса обычно приводят к показу стандартной страницы «500 Internal Error» вместо страниц сайта.
php_value engine off RemoveHandler .pl .cgi .php .php3 .phtml AddType application/x-httpd-php-source .pl .cgi .php .php3 .phtml