.htaccess
.htaccess — файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), не предоставляя доступа к главному конфигурационному файлу, таких как управляемый доступ к каталогам, переназначение типов файлов и т. д.
.htaccess является подобием httpd.conf, с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги. Возможность использования .htaccess в том или ином каталоге указывается в httpd.conf .
Файл .htaccess может быть размещен в любом каталоге. Директивы этого файла действует на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess). Для того, что бы эти файлы .htaccess можно было использовать - необходимы соответствующие настройки главного конфигурационного файла. Как правило, подавляющее большинство хостеров разрешают использовать настройки в файле .htaccess.
Пути к файлам и каталогам должны указываться от корня сервера, например, /pub/home/server/html/
Директивы .htaccess[править | править код]
Перенаправление (редирект)[править | править код]
На другой адрес[править | править код]
Redirect / http://www.example.com
При запросе определенных страниц[править | править код]
redirect /data http://www.expample.com/data redirect /forum http://forum.example.com
По маске имени файла[править | править код]
Следующая строки определяют, что все запросы кроме запросов к файлам с расширениями .gif и .jpg будут перенаправлены на файл index.php
RewriteEngine On RewriteRule !.(gif|jpg)$ index.php
Работает только при наличии mod_rewrite.
По IP-адресам[править | править код]
Если посетитель имеет IP-адрес 192.168.11.1, то ему будет открыта страница data.html
SetEnvIf REMOTE_ADDR 192.168.11.1 REDIR="redir" RewriteCond %{REDIR} redir RewriteRule ^/$ /data.html
Работает только при наличии mod_rewrite
Удаление префикса «www.» из адреса[править | править код]
Перенаправление с http://www.mydomain.com на http://mydomain.com
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www.mydomain.com$ [NC] RewriteRule (.*) http://mydomain.com/$1 [R=301]
Работает только при наличии mod_rewrite
Индексные страницы[править | править код]
Переопределение индексного файла[править | править код]
DirectoryIndex index.html index.php index.shtml
Запрет на отображение содержимого каталога при отсутствии индексного файла[править | править код]
Options -Indexes
Типы файлов[править | править код]
Изменение обработчика по типу файла[править | править код]
Пример переопределения HTML файлов для обработки их с помощью PHP
RemoveHandler .html .htm AddType application/x-httpd-php .php .htm .html .phtml
Обработка ошибок[править | править код]
ErrorDocument 401 /401.html ErrorDocument 403 /403.html ErrorDocument 404 /404.html ErrorDocument 500 /500.html
При этом размер конечного файла должен быть больше 515 байт, иначе некоторые браузеры могут подменить страницу своей стандартной
Кодировка[править | править код]
Отдаваемых файлов[править | править код]
AddDefaultCharset windows-1251
Загружаемых файлов[править | править код]
CharsetSourceEnc windows-1251
Отдаваемых файлов конкретного типа[править | править код]
AddCharset windows-1251 .js
вместо .js можно указать несколько типов файлов, разделяя их пробелами.
Управление доступом[править | править код]
Запрет доступа к файлам[править | править код]
Запрет доступа ко всем файлам и каталогам в текущем каталоге
deny from all
Запрет доступа к определенному файлу
<Files config.php> deny from all </Files>
Запрет доступа к файлам по маске
<Files ~ "*.inc"> deny from all </Files>
Спецсимволы для определения маски
? - любой одиночный символ * - любая последовательность символов, исключая символ / (слэш)
Запрет доступа к файлам по регулярному выражению
<Files ~ "*f?a.(inc|conf|cfg)"> deny from all </Files>
Определение доступа по IP[править | править код]
order deny,allow deny from all allow from 192.168.11.1
Строка order deny,allow определяет, в каком порядке следует выполнять директивы. Сначала выполняется директива запрета доступа, а затем разрешается доступ только для IP-адреса 192.168.11.1. Если в первой строке поменять порядок следования директив на order allow,deny, то доступ для данного IP-адреса не будет открыт, так как директива deny, выполняемая последней перекроет действия директивы allow.
Закрытие каталогов паролем[править | править код]
файл .htaccess
AuthName "Auth message" AuthType Basic require <valid-user | user <username1> [username2] ... [usernameN]> AuthUserFile "/full/path/to/.htpasswd"
Пароли хранятся в файле .htpasswd