Варианты использования .htaccess файла

Здравствуйте, уважаемые читатели XoZblogа! О файле .htaccess и о том как с ним можно работать, должен знать каждый веб-мастер. Файл предназначен для дополнительной конфигурации веб-сервера Apache. Обычно с его помощью управляют доступом к каталогам сайта, а также формируют человеко-понятные URL. Но это далеко не все, что Вы можете сделать с .htaccess.

Файл .htaccess варианты использования

ВАЖНО: прежде чем начинать эксперименты с .htaccess, всегда делайте резервную копию оригинального файла!

Итак, вот несколько вариантов использования .htaccess:

1. Управление доступом к файлам и каталогам

Иногда бывает необходимо полностью блокировать пользователей от доступа к определенной папке. Чтобы сделать это, вставьте следующий код в файл .htaccess и поместите его (файл) в каталог, доступ к которому следует закрыть:

1
deny from all

Однако, будет заблокирован доступ для всех, включая вас. Чтобы предоставить себе доступ нужно указать свой IP-адрес(а). Вот код:

1
2
3
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxx ваш IP. Первая строка определяет порядок, сначала запрещаем доступ к каталогу, а затем разрешаем для определенного IP.

Если Вы хотите заблокировать доступ к файлу, в том числе к самому .htaccess, используйте следующий фрагмент:

1
2
3
<Files .htaccess>
    deny from all
</Files>

Аналогичным образом можно добавить разрешение для IP.

Чтобы закрыть доступ к какому-то оному типу файлов:

1
2
3
<Files "*.pdf">
    deny from all
</Files>

Если вы хотите закрыть доступ к нескольким типам файлов, используйте это:

1
2
3
<FilesMatch ".(htaccess|htpasswd|ini|php|fla|psd|log|sh)$">
    deny from all
</FilesMatch>

2. Отключение просмотра каталогов

Для предотвращения просмотра каталога (и его дочерних каталогов) в браузере, необходимо добавить следующее:

1
Options All -Indexes

Однако, если по какой-то причине Вы хотите разрешить просмотр, измените его на следующее:

1
Options All +Indexes

3. Ускорение времени загрузки путем сжатия файлов

Вы можете сжимать файлы любого типа, а не только изображения. Например, для сжатия HTML файлов, использовать это (должен быть подключен mod_deflate):

1
AddOutputFilterByType DEFLATE text/html

Для сжатия текстовых файлов:

1
AddOutputFilterByType DEFLATE text/plain

Вы также можете сжать JavaScript, или добавить сжатие для различных типов файлов с помощью одной команды:

1
2
3
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE text/css

Кроме того, если вы хотите сжать все ваши JavaScript, HTML, CSS и файлы с GZIP, вы можете использовать это:

1
2
3
4
5
6
7
8
9
10
<IfModule mod_gzip.c>
    mod_gzip_on Yes
    mod_gzip_dechunk Yes
    mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
    mod_gzip_item_include handler ^cgi-script$
    mod_gzip_item_include mime ^text\.*
    mod_gzip_item_include mime ^application/x-javascript.*
    mod_gzip_item_exclude mime ^image\.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>

4. Защитить свой сайт от Хотлинкинга

Если Вы не хотите, чтобы кто-то добавлял изображения с вашего сайта на свой, тем самым увеличивая нагрузку на ваш сервер, используйте это:

1
2
3
4
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

Просто замените yourdomain.com на свой домен.

5. Блокировка посетителей, перешедших из определенного домена

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

1
2
3
RewriteEngine on
RewriteCond %{HTTP_REFERER} badsite\.com [NC]
RewriteRule .* - [F]

Если «плохих» источников больше:

1
2
3
4
RewriteEngine on
RewriteCond %{HTTP_REFERER} badsite\.com [NC,OR]
RewriteCond %{HTTP_REFERER} anotherbadsite\.com
RewriteRule .* - [F]

6. Блокировать не желательных ботов и пауков

Этот метод может блокировать определенных ботов или пауков от индексирования вашего сайта (требуется mod_rewrite).

1
SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT

7. Кэширование файлов

Еще один способ ускорить загрузку вашего сайта — кэширование файлов. Вот то, что вам нужно добавить для того, чтобы добиться этого:

1
2
3
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

Бывают случаи когда без вашего ведома файлы кэшируют, чтобы обойти это, используем:

1
2
3
<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
    Header unset Cache-Control
</FilesMatch>

8. Пользовательские страницы ошибок

Для того, чтобы перенаправить пользователя при наступлении ошибки на заготовленную для этого страницу, используем следующий код:

1
2
3
4
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

Следуют указать путь, в данном случае файлы находятся в каталоге error.

9. Изменение индексной страницы

Стандартные индексные страницы это index.html, index.php, index.htm. Если Вы хотите задать другую страницу как заглавную, сделать это легко:

1
DirectoryIndex mypage.html

Замените mypage.html на требуемое название страницы, которую Вы подготовили.

10. Перенаправление на защищенное соединение HTTPS

Если вы используете HTTPS и хотите, чтобы пользователи были перенаправлены на защищенное соединение, используйте это:

1
2
3
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

11. Работа с директивами PHP.ini

.htaccess позволяет манипулировать некоторыми значениями директив файла php.ini, которые непосредственно влияют на PHP.
Однако следует установить максимально возможные привилегии для .htaccess — директива AllowOverride в файле httpd.conf, должна быть установлена в значение Options, либо в значение All.

1
AllowOverride All

Например, если вы хотите увеличить максимальный размер загружаемого на сервер файла, используйте этот фрагмент для вашего .htaccess:

1
php_value upload_max_filesize 15M

Вы также можете установить максимальный размер данных передаваемых в POST методом:

1
php_value post_max_size 10M

Или установить максимальное время выполнения php-сценариев, в секундах:

1
php_value max_execution_time 240

Более подробный список смотрите ЗДЕСЬ.

12. Маскировка расширения файлов

Один из способов, чтобы скрыть расширение файлов — это замаскировать их под другое. Например файл php замаскировать под обычный html:

1
AddType application/x-httpd-php .htm .html

Чтобы достичь желаемого результата, вы должны переименовать все PHP-скрипты в соответствии с выбранным вами расширением.

Чтобы оставаться в курсе свежих статей и уроков подписывайтесь на страницу ВКонтакте или добавляйте в круги на Google+. Не забывайте оставлять комментарии, спасибо!

Чтобы оставаться в курсе свежих статей и уроков подписывайтесь на еженедельную почтовую рассылку или на новостную ленту RSS. Спасибо!