Директивы .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-адресов.

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

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

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