.htaccess
Содержание
- 1 Для включения .htaccess используется
- 2 Директива Files
- 3 Директива FilesMatch
- 4 Перенаправления (редиректы)
- 5 Ограничение доступа (пароли)
- 6 Управление сервером
- 6.1 Директива DirectoryIndex - изменения страницы по умолчанию (стартовой)
- 6.2 Директива ErrorDocument - обработка ошибок
- 6.3 Директива AddOutputFilter - установка фильтра (SSI)
- 6.4 Директива SetHandler - установка обработчика (PHP, Parser)
- 6.5 Директива AddHandler - установка обработчика (PHP, Parser)
- 6.6 Директива AddDefaultCharset - установка обработчика (PHP, Parser)
- 7 Как заставить Апач обрабатывать SSI директивы?
- 8 htpasswd
- 9 Ссылки
Для включения .htaccess используется
директива AllowOverride (в httpd.conf)
- Синтаксис: AllowOverride override override ...
- Значение по умолчанию: AllowOverride All
- Контекст: каталог
- Состояние: основное
Когда сервер находит .htaccess файл (как определено AccessFileName) ему необходимо знать какие директивы, объявленные в том файле могут отменять ранее утановленную информацию доступа.
Эта директива может быть установлена в None, т.е. чтобы сервер не читал файл .htaccess. Если она установленна в All - сервер будет допускать все директивы .htaccess файла. Возможны следующие одно или несколько значений:
AuthConfig - допускает использование директив разрешения (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require, и т.д..).
FileInfo - допускает использование директив, управляющих типами документа (AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority, и т.д..).
Indexes - допускает использование деректив управления индексацией каталога(AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, и т.д..).
Limit - допускает использование основных директив управления доступом (allow, deny и order).
Options - допускает использование директив, управляющих специфическими особенностями каталога (Options и XBitHack).
Директива Files
Оописание: дирктива Files ограничивает действие директив одним файлом Syntax: <Files filename> ... </Files> filename имя файла Пример:
<Files my_secure_document.html> Order Deny,Allow Deny from all Allow from 192.168.1.1 </Files>
Директива FilesMatch
Описание: дирктива Files ограничивает действие директив одним файлом Syntax: <Files regex> ... </Files> regexp: регулярное выражение (шаблон), описывающее группу файлов. Пример:
<FilesMatch ".(gif|jpe?g|png)$"> Order Allow,Deny Allow from all Deny from 192.168.1.1 </Files>
Перенаправления (редиректы)
Директива Redirect
Описание: Выполняет редирект посетителя, запрашивающего документ на другой URL. Выполняет внешний редирект (сообщая браузеру о необходимости загрузить другой URL). Синтаксис: Redirect [status] URL-path URL status: необязательное поле, определяет код возврата, допустимые значения: permanent (301 документ перемещен постоянно), temp (302 документ перемещен временно), seeother (303 смотрите другой), gone (410 убран). URL-path: локальная часть URL запрашиваемого документа. URL: URL куда должен быть выполнен редирект
Redirect temp / http://www.iho.ru/newyear.html Redirect temp /index.html http://www.iho.ru/newyear.html Redirect permanent /prices2002.html http://www.iho.ru/prices2003.html
Директива RedirectMatch
Описание: Выполняет редирект посетителя, запрашивающего документ на другой URL. Выполняет внешний редирект (сообщая браузеру о необходимости загрузить другой URL). Директива аналогична Redirect, за исключением того, что вместо адреса запрашиваемого документа пишется регулярное выражение (шаблон) Синтаксис: Redirect [status] regexp URL status: необязательное поле, определяет код возврата, допустимые значения: permanent (301 документ перемещен постоянно), temp (302 документ перемещен временно), seeother (303 смотрите другой), gone (410 убран). URL-path: локальная часть URL запрашиваемого документа. regexp: регулярное выражение (шаблон), описывающее группу URL-ей.
RedirectMatch (.*).gif$ http://www.myserver.com$1.png RedirectMatch (.*.jpg)$ http://www.myanother.com$1
Пример: разные страницы, в зависимости от IP адреса посетителя. В примере посетители с адреса 192.168.1.1 перенаправляются на другую страницу
RewriteCond %{REMOTE_ADDR} 192.168.1.1 RewriteRule ^/$ /anoter_index_pahe.html [L]
Пример: разные страницы, в зависимости от ссылающейся страницы. В примере посетители, приходящис со страницы http://www.partner.ru/ вместо /prices.html получают /anoter_prices.html
RewriteCond %{HTTP_REFERER} http://www.partner.ru/recep.html RewriteRule ^/prices.html$ /anoter_prices.html [L]
Перенаправление посетителя при запросе определенных страниц:
Это уже для всех сетевых вирусов и сканеров. Теперь любой запрос с адресом /_vti_bin будет автоматически перенаправляться на Microsoft:
redirect /_vti_bin http://www.microsoft.com redirect /scripts http://www.microsoft.com redirect /MSADC http://www.microsoft.com redirect /c http://www.microsoft.com redirect /d http://www.microsoft.com redirect /_mem_bin http://www.microsoft.com redirect /msadc http://www.microsoft.com RedirectMatch (.*)cmd.exe$ http://www.microsoft.com$1
Ограничение доступа (пароли)
Директива Order
Описание: Устатавливает порядок работы директив Deny и Allow Синтаксис: Order порядок порядок может принимать значения Deny,Allow или Allow,Deny По умолчанию: Order Deny,Allow
Директива Deny
Описание: Запрещает доступ определенных клиентов к ресурсам. Синтаксис: Deny from all|host host может принимать значения IP адреса или имени хоста.
Директива Allow
Описание: Разрешает доступ определенных клиентов к ресурсам. Синтаксис: Deny from all|host host может принимать значения IP адреса или имени хоста.
Пример: запрет на доступ для всех
Order Deny,Allow Deny from all
Пример: разрешение на доступ для определенных IP адресов
Order Deny,Allow Deny from all Allow from .iho.ru Allow from 192.168.1.1
Пример: запрет на доступ для всех за исключением определенных IP адресов
Order Allow,Deny Allow from all Deny from .iho.ru Deny from 192.168.1.1
Пример: запрет на доступ для определенный файл. В примере запрещается доступ к файлу .htpasswd для всех посетителей
<Files ".htpasswd"> Order Deny,Allow Deny from all </Files>
Пример: запрет на доступ для определенной группы файлов. В примере запрещается доступ к файлам с расширениями "lib" и "pm" для всех посетителей
<FilesMatch ".(lib|pm)$"> Order Deny,Allow Deny from all </FilesMatch>
Установка пароля на доступ
Директива AuthName
Описание: значение AuthName будет выводиться для посетителя и может использоваться для пояснения запроса авторизации.
Директива AuthType
Описание: Эта директива выбирает тип аутентификации. Возможны следующие типы: Basic and Digest. Синтаксис: AuthType Basic|Digest
Директива AuthUserFile
Описание: значение AuthUserFile указывает имя файла с паролями для аутентификации пользователей. Файл с паролями может быть создаен утилитой htpasswd. Путь к файлу с паролями задается относительно корня веб-сервера. Храните файл с паролями в папке, доступ к которой закрыт для пользователей.. Синтаксис: AuthUserFile путь-к-файлу
Директива Require
Описание: Определяет пользователей, которые могут получить доступ Синтаксис: Require имя-пользователя|valid-user Указывая valid-user вы разрешаете доступ всем пользователям, перечисленным в файле паролей.
Пример: разрешает доступ директории всем пользователям:
AuthName "Restricted area" AuthType Basic AuthUserFile /home/st1331/www/data/.htpasswd Require valid-user
Пример: разрешает доступ к директории только 3-м пользователям:
AuthName "Very restricted area" AuthType Basic AuthUserFile /home/st1331/www/data/.htpasswd Require antonio solo marina
Пример: ограничение доступа к определенным файлам (в этом примере ограничен доступ к zip архивам)
<FilesMatch ".zip$"> AuthName "Only valid users can download zip files." AuthType Basic AuthUserFile /home/st1331/www/data/.htpasswd Require valid-user </FilesMatch>
Пример: ограничение доступа к одному файлу (в этом примере ограничен доступ к файлу .htpasswd)
<Files ".htpasswd"> AuthName "Access restricted." AuthType Basic AuthUserFile /home/st1331/www/data/.htpasswd Require antonio solo </Files>
Управление сервером
Директива DirectoryIndex - изменения страницы по умолчанию (стартовой)
Описание: Позволяет изменить страницу, которая будет показываться при обращении к директории Синтаксис: DirectoryIndex page [page] page - название стартовой страницы. Может быть указано несколько страниц. Пример:
DirectoryIndex main.html index.php test.shtml
Для того что бы директория без индексного файла выдавала ошибку, заменяем в httpd.conf:
Options Indexes на Options -Indexes
Директива ErrorDocument - обработка ошибок
Описание: позволяет устанавливать альтернативные страницы ошибок Синтаксис: ErrorDocument code URL-path URL-path - локальный адрес страницы code - код ошибки. Наиболее типичные коды ошиброк:
401 — Требуется авторизация (Authorization Required) 403 — пользователь не прошел аутентификацию, запрет на доступ (Forbided) 404 — запрашиваемый документ (файл, директория) не найден (Not Found) 500 — внутренняя ошибка сервера — ошибка скрипта или ошибка в синтаксисе файла .htaccess - (Internal Server Error)
ErrorDocument 401 /401.html ErrorDocument 403 /403.html ErrorDocument 404 /404.html ErrorDocument 500 /500.html
Директива AddOutputFilter - установка фильтра (SSI)
<FilesMatch ".(mytype)$"> SetOutputFilter INCLUDES </Directory>
Директива SetHandler - установка обработчика (PHP, Parser)
Описание: устанавливает обработчик для файлов в заданной директории Синтаксис: SetHandler handler-name
SetHandler php-script
Директива AddHandler - установка обработчика (PHP, Parser)
Описание: устанавливает обработчик для файлов указанного типа Синтаксис: AddHandler handler-name filename-extension
AddHandler php-script .html AddHandler parser-script .htm
Директива AddDefaultCharset - установка обработчика (PHP, Parser)
По умолчанию на сервере установлена кодировка Windows-1251
AddDefaultCharset koi8-r
Как заставить Апач обрабатывать SSI директивы?
SSI позволяют "собирать" страницу из кусочков. В одном кусочке у вас код меню, в другом код верхней части страницы, в третьем - нижней. А посетитель видет обычную страницу, которая состоит из того кода, который входит в ваши кусочки. Необходимы обязательные установки в httpd.conf: В блоке, начинающемся с <Directory/> и заканчивающийся </Directory> в строку Options Indexes добавьте Includes. После, в файле .htaccess пишем:
AddOutputFilter Includes .html .htm
htpasswd
Директива htpasswd служит для создания файла с паролями, который может быть использован при аутентификации пользователей веб-сервером.
Пример: создание файла с паролями и добавление в него 1 имени:
htpasswd -c Filename username
Пример: Добавление или изменение файла с паролями
htpasswd Filename username2
Ссылки
Взято здесь и здесь.