Что такое .htaccess и как он работает

2 167 посмотрели
Posted by Алексей Нещадим in IT | Tagged , , , , , , , , , | Leave a comment

.htaccess (hypertext access, конфигурационный файл web сервера Apache) – это файл для дополнительной конфигурации Apache и разрешений для работы веб-сервера в отдельных каталогах.

Перед тем как вносить изменение в файл, не забывайте делать резервную копию оригинального файла .htaccess. Это спасет вас от ошибок и всевозможных проблем. Дело в том, что неправильная конфигурация .htaccess может привести к серьезному снижению производительности вашего web-сайта, в отдельных случаях даже до нерабочего состояния. Возможно такое, что некоторые рассмотренные варианты могут не работать, это зависит от настроек вашего web-сервера или сервера хостинг-провайдера.

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

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

1. Запрет на загрузку файлов с внешних сайтов.

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

Options +FollowSymlinks
 #Запрет на загрузку файлов с внешних сайтов
 RewriteEngine On
 RewriteCond %{HTTP_REFERER} !^$
 RewriteCond %{HTTP_REFERER} !^http://(www.)?neshhadim.com/ [nc]
 RewriteRule .*.(gif|jpg|png)$ http://neshhadim.com/img/ban_on_downloading.gif[nc]

Не забудьте поменять neshhadim.com на доменное имя вашего ресурса и создать изображение ban_on_downloading.gif, которое будет показано вместо запрашиваемой картинки.

2. Блокирование запросов от нежелательных User Agents.

С помощью этого правила можно заблокировать нежелательные User Agent, которые могут быть потенциально опасными или перегружать сервер ненужными запросами.

#Блокируем запросы от плохих ботов
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]
<limit get=»" post=»" head=»">
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</limit>

Список User Agent браузеров, роботов и пауков поисковых машин, веб-каталогов, менеджеров закачек, спам-ботов и плохих ботов можно легко найти в интернете.

3. Запрет доступа для всех IP адресов и исключения.

Для того, чтобы запретить доступ к вашему сайту всем или разрешить только отдельным IP-адресам, добавьте следующий код в ваш файл .htaccess.

#Запрет доступа для всех IP
ErrorDocument 403 http://www.neshhadim.com
Order deny,allow
Deny from all
Allow from xxx.xxx.xxx.1
Allow from xxx.xxx.xxx.1

Замените www.neshhadim.com на имя вашего ресурса.

4. Создание собственных страниц ошибок.

С помощью следующего кода вы сможете заменить стандартные страницы ошибок на свои.

ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

5. Создание черного списка IP адресов.

Надоели спам-сообщения или комментарии определенного пользователя? Просто заблокируйте их IP адреса с помощью приведенного кода.

#Создаем черный список IP адресов
 allow from all
 deny from xxx.xxx.xxx.1
 deny from xxx.xxx.xxx.2

Узнать IP адреса пользователей можно или в логах Apache или с помощью серверов статистики.

6. Установка страницы по-умолчанию.

Обычно страницей по умолчанию является index.html/php. С помощью данного кода можно настроить по-умолчанию любую страницу.

#Установка страницы по-умолчанию
 DirectoryIndex test.php

7. Запрет на просмотр содержимого папки.

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

#Запрет на просмотр содержимого папки
Options All -Indexes

8. Защита сайта.

Следующий код позволяет защитить сайт от script enjection и нежелательных модификаций _REQUEST или GLOBALS.

#Отслеживание сим-ссылок
Options +FollowSymLinks
#Запускаем url_rewriting
RewriteEngine On
#Блокирование ссылок, содержащих
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
#Блокирование скриптов, которые пытаются изменить переменные PHP Globals:
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
#Блокирование скриптов, которые пытаются изменить переменную _REQUEST:
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
#Перенаправление всех подобных на страницу с ошибкой 403 – запрещено
RewriteRule ^(.*)$ index.php [F,L]

9. Изменение обработчика по типу файла

Пример переопределения HTML файлов для обработки их с помощью PHP

AddHandler application/x-httpd-php5 .php .htm .html .phtml

10. Перенаправление (редирект) На другой адрес

Redirect / http://www.example.com

 

Добавить комментарий