htaccess

Правила написания .htaccess
Пути к файлам (директориям) указываются от корня сервера.

Правильный пример:

DirectoryIndex /home/st1331/www/data/main.html

Ошибка:

DirectoryIndex /www/news/main.html

Адресация к документам, расположенным на других сайтах должно выполняться с указанием протокола

Правильный пример:

Redirect /oldsite/ http://www.site.ru/

Ошибка:

Redirect /oldsite/ www.site.ru/

Комментарии — строки, начинающиеся с символа #.

В выражениях можно использовать переменные окружения, например %{REMOTE_ADDR} или %{HTTP_REFERER}.
Файл .htaccess должен быть записан в UNIX-формате — это означает что перевод строки должен задаваться в нем одним символом (0x0A), а не двумя (0x0D 0x0A), как в DOS или Windows

Определение области действия директив
Директива Files

Описание: дирктива Files ограничивает действие директив одним файлом
<Files filename> … </Files>

filename имя файла
Пример:

<Files my_secure_document.html>
Order Deny,Allow
Deny from all
Allow from 192.168.1.1
</Files>

Директива FilesMatch

Описание: директива Files ограничивает действие директив одним файлом
<Files regex> … </Files>

regexp: регулярное выражение (шаблон), описывающее группу файлов.
Пример:

<FilesMatch «\.(gif|jpe?g|png)$»>
Order Allow,Deny
Allow from all
Deny from 192.168.1.1
</FilesMatch>

Перенаправления (редиректы)
Директива 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://goodhack.net.ua/newyear.html
Redirect temp /index.html               http://goodhack.net.ua/newyear.html
Redirect permanent /prices2002.html     http://goodhack.net.ua/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 будет автоматически перенаправляться на http://goodhack.net.ua:

redirect /_vti_bin http://goodhack.net.ua
redirect /scripts http://goodhack.net.ua
redirect /MSADC http://goodhack.net.ua
redirect /c http://goodhack.net.ua
redirect /d http://goodhack.net.ua
redirect /_mem_bin http://goodhack.net.ua
redirect /msadc http://goodhack.net.ua
RedirectMatch (.*)\cmd.exe$ http://goodhack.net.ua$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 .goodhack.net.ua
Allow from 192.168.1.1

Пример: запрет на доступ для определенных IP адресов

Order Allow,Deny
Allow from all
Deny from .goodhack.net.ua
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 user 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 user antonio solo
</Files>

Управление сервером
Директива DirectoryIndex — изменения страницы по умолчанию (стартовой)

Описание: Позволяет изменить страницу, которая будет показываться при обращении к директории
DirectoryIndex page [page]

page — название стартовой страницы. Может быть указано несколько страниц.
Пример:

DirectoryIndex main.html index.php test.shtml

Директива 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

Как поставить запрет на отображение содержимого директории при отсутствии индексного файла?

Предположим, что у вас вся графика, используемая на сайте находится в директории img. Посетитель может набрать в адресной строке браузера эту директорию и увидеть список всех ваших графических файлов. Конечно, это не нанесет вам урона, но можно и не дать такого просмотра посетителю. В .htaccess пишем:

Options -Indexes

Утилита htpasswd

Директива htpasswd служит для создания файла с паролями, который может быть использован при аутентификации пользователей веб-сервером.

Пример: создание файла с паролями и добавление в него 1 имени:

htpasswd -c Filename username

Пример: Добавление или изменение файла с паролями

htpasswd Filename username2

Добавил файл .htaccess, и теперь сервер выдает 500 ошибку. Почему?

500-я ошибка может быть вызвана следующими причинами:

1. неверный синтаксис .htaccess
2. файл .htaccess записан в формате Windows, а должен быть записан в формате UNIX

Тэги:

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