.htaccess

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

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

.htaccess является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги. Возможность использования .htaccess в том или ином каталоге указывается в httpd.conf.

Файл .htaccess может быть размещён в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess). Для того чтобы эти файлы .htaccess можно было использовать, необходимы соответствующие настройки главного конфигурационного файла (значение директивы AllowOverride должно быть установлено All). Как правило, подавляющее большинство хостеров разрешают использовать настройки в файле .htaccess.

Пути к файлам и каталогам должны указываться от корня сервера, например, /pub/home/server/html/

Содержание

[править] Директивы .htaccess

[править] Перенаправление (редирект)

[править] На другой адрес

Redirect /index.php http://example.com/index.php

[править] При запросе определённых страниц

redirect /data http://www.example.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

Если посетители имеют IP-адреса 192.168.11.1 и 192.168.11.2, то им будет открыт адрес http://example.com

RewriteEngine on
RewriteCond %{REMOTE_ADDR} (192.168.11.1|192.168.11.2)
RewriteRule .* http://example.com [R=301,L]

Работает только при наличии mod_rewrite

[править] В зависимости от реферера (ссылающейся страницы)

RewriteCond %{HTTP_REFERER} http://example.com
RewriteRule ^/original.html$ /another.html [L]

В данном случае все посетители пришедшие с сайта example.com вместо файла original.html получат файл another.html

[править] Удаление префикса «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 ~ "\.(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
Allow from all
Deny from 192.140.170.219
Deny from 10.10.220.201

В этом примере наоборот запрещается доступ с определёнными IP-адресами.

[править] Закрытие каталогов паролем

файл .htaccess

AuthName "Auth message"
AuthType Basic
require <valid-user | user <username1> [username2] ... [usernameN]>
AuthUserFile "/full/path/to/.htpasswd"

Пароли хранятся в файле .htpasswd

[править] Ссылки


Источник — «http://ru.wikipedia.org/wiki/.htaccess»