Здравствуйте, уважаемые читатели XoZblogа! О файле .htaccess и о том как с ним можно работать, должен знать каждый веб-мастер. Файл предназначен для дополнительной конфигурации веб-сервера Apache. Обычно с его помощью управляют доступом к каталогам сайта, а также формируют человеко-понятные URL. Но это далеко не все, что Вы можете сделать с .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+. Не забывайте оставлять комментарии, спасибо!
Источник статьи/урока: https://xozblog.ru
По материалам: http://speckyboy.com/2013/01/08/useful-htaccess-snippets-and-hacks/