Текст взят из ownru.ru
Долго искал нужную информацию о файле под названием htacess, массу однотипной информации, но общее представление, что это такое и как можно его использовать наиболее эффективно, сложилось только полсе обобщения прочитанного материала.
Самое главное: файл htaccess может быть использован, только если сделаны соответствующие настройки на веб сервере, надо иметь в виду, что многие бесплатные хосты не дают возможность использовать данный файл, для настройки приложения.
Файл htaccess может быть помещен в каждую директорию приложения, и область его действия распространится на эту директорию, перекрывая директивы такого же файла расположенного в директории родителе.
Обработка файла htaccess производится при каждом вызове объекта из директории где он расположен.
Директивы файла обрабатываются последовательно.
Директивы, прописанные в файле учитываются при работе с директорией в которой данный файл конфигурации располагается, и их действие распространяется на все вложенные поддиректории.
Все директивы допустимые в файле htaccess, могут быть сделаны в основном настроечном файле сервера, использование htaccess, позволяет конечным пользователям изменить общие настройки, при этом не имея доступа к основным файлам конфигурации веб сервера.
При использовании htaccess, теряется производительность(зависит еще непосредственно от состава директив), общий файл настройки более предпочтителен, т.к. обрабатывается один раз при старте сервера, а файл htaccess, обрабатывается при каждом обращении к серверу.
Все возможные директивы для файла конфигурации, можно прочитать в описании конкретного сервера, для Apache информацию можно найти на сайте разработчика: httpd.apache.org
Что, нам дает использование данного файла, рассмотрим наиболее часто используемые директивы настройки.
- Прежде всего, это предоставление и блокирование доступа до директории, ну или объектов приложения.
Предположим мы хотим исключить доступ до нашего сайта с определенного IP, или мы
хотим блокировать весе IP в определенном диапазоне:
order deny,allow
deny from 38.117.108.5 – блокируем конкретное IP
deny from 222.251.128.0/17 – блокируем диапазон IP
deny from spamer.com – блокируем определенный домен.
allow from myDoorway.com – разрешаем доступ для домена.
allow from all
Говорим, чтобы файлы .htaccess были доступены со
deny from all
- Переадресация на другую страницу, с возвратом 301 кода:
Redirect 301 /page.htm http://www.mysite.ru/newpage.htm
- Переадресация с обработкой рефера ( referer – поле в http запросе, используемое для внесения информации откуда данный запрос сделан).
RewriteCond %{HTTP_REFERER} HTMLParser/1.6 [OR]
RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?spam.com.*$ [NC]
RewriteRule /* http://welcome-spammer.com/ [R,L]
- Все пришедшие с сайта spam.com идут на сайт welcome spamer.
Переадресация на нужную страницу, при возникновении ошибки
ErrorDocument 401 /error401.html
ErrorDocument 403 http://www.partner-site.com
- защита от хотлинков ( картинка лежит на вашем сервере, вызывается на сайте злоумышленника).
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomen.com\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(jpe?g|gif|bmp|png)$ images/figVam.jpg [L]
Все внешние ссылки на картинки на вашем сайте выдают картинку figVam.jpg
- Делаем красивыми с точки зрения СЕО –URL
RewriteRule ^(.*)$ index.php?q=$1 [L]
Теперь немного поподробнее про выражение: ^(.*)$
Крышка вначале означает начало строки.
Бакс в конце означает конец строки.
Точка в скобочках означает любой символ.
Звездочка после точки означает, что любых символов может быть от нуля до бесконечности.
Скобочки означают группу. Т.к. она первая (и единственная), то эта группа идет под номером 1.
Про: index.php?q=$1
означает, что мы перезаписываем url на index.php?q= и к этому добавляем первую группу $1, т.е. имя запрашиваемого файла.
index.php?q=$1
[L] – последнее преобразование(команда break), флаг используется для того, чтобы не преобразовывать текущий URL другими, следующими за этим, правилами преобразований.
И еще одно важное добавление помогающее в работе:
php_flag display_errors on
включает вывод на экран ошибок приложения.
Рассмотрена только часть возможных директив при использований файла конфигурации htaccess, приведенные в примеры, могут иметь разный синтаксис детали которого можно посмотреть на сайтах разработчика конкретного web сервера.