10+ вставок кода для htaccess

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

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

Защита паролем – это один аспект вопроса, но иногда нужно полностью блокировать пользователю возможность доступа к определённым файлам или каталогам. Такие задачи обычно возникают для системных папок, например, includes. Приложение должно иметь доступ к ним, а пользователь лишается всех привилегий.

Для решения задачи добавьте следующий код в файл .htaccess и сохраните его в нужном каталоге:

deny from all

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

order deny,allow
 
deny from all
 
allow from xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxx – ваш IP адрес. Если заменить последние три цифры на 0/12, например, то будет указан диапазон IP адресов в одной сети. Но такой подход может привести к проблемам, поэтому лучше указывать список IP адресов раздельно.

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

<Files .htaccess>
 
order allow,deny
 
deny from all
 
</Files>

Аналогично, если вам требуется открыть доступ с определенных IP адресов, перечислите их с помощью allow from.

Если нужно блокировать доступ к определённым типам файлов, используйте следующий код:

<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
 
Order Allow,Deny
 
Deny from all
 
</FilesMatch>

2. Запрещаем просмотр директории

Для запрещения просмотра содержимого директории используйте следующий код:

Options All -Indexes

Но если вам нужно по каким-то причинам разрешить просмотр директории, используйте следующий код:

Options All +Indexes

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

Вы можете сжимать любые файлы, а не только изображения. Например, для сжатия HTML файлов используйте следующий код:

AddOutputFilterByType DEFLATE text/html

А для сжатия текстовых:

AddOutputFilterByType DEFLATE text/plain

Можно также сжимать JavaScript файлы или определять несколько типов файлов для архивации:

AddOutputFilterByType DEFLATE application/javascript
 
AddOutputFilterByType DEFLATE application/rss+xml

В качестве альтернативы можно сжимать все HTML, JavaScript, CSS и прочие файлы с помощью GZIP:

<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. Защищаем сайт от хотлинкинга

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

RewriteEngine on
 
RewriteCond %{HTTP_REFERER} !^$
 
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?вашдомен.ru [NC]
 
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

Просто замените вашдомен.ru на название своего домена.

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

Если вы не приветствуете пользователей определенного домена, то можно забанить на своем сайте. Например, если ваш сайт попал в список там, откуда не желателен трафик (например, порнографические сайты, неонацисткие ресурсы и прочее), то вы можете перекрыть его с помощью страницы 403 (запрет доступа). Нужно, чтобы был включен mod_rewrite (обычно он включен). Добавляем код:

<IfModule mod_rewrite.c>
 
RewriteEngine on
 
RewriteCond %{HTTP_REFERER} bannedurl1.com [NC,OR]
 
RewriteCond %{HTTP_REFERER} bannedurl2.com [NC,OR]
 
RewriteRule .* - [F]
 
</ifModule>

Нужно заменить bannedurl1.com и bannedurl2.com на имена доменов из вашего черного списка. Флаг [NC] указывает на отсутствие чувствительности к регистру в имени домена, а флаг [F] определяет действие – в нашем примере вывод страницы 403. Если нужно забанить несколько сайтов, используйте флаг [NC,OR] для каждого домена, включая последний. Для запрета только одного домена можно использовать только флаг [NC].

 

6. Блокирование запросов от определенных агентов

Если в вашем журнале имеются записи о действиях определенных агентов пользователей (роботов или пауков), которые вам не нравятся, то можно добавить несколько строк в файл .htaccess и запретить таким агентам доступ к вашему сайту:

RewriteEngine On  
RewriteBase /  
SetEnvIfNoCase Referer "^$" bad_user
SetEnvIfNoCase User-Agent "^badbot1" bad_user
SetEnvIfNoCase User-Agent "^badbot2" bad_user
SetEnvIfNoCase User-Agent "^badbot3" bad_user
Deny from env=bad_user

Замените badbot1, badbot1 и так далее именами агентов из вашего журнала. Такое действие будет держать данные программы подальше от вашего сайта.

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

Другой метод ускорения загрузки вашего сайта – кеширование файлов. вот что нужно добавить в файл .htaccess для включения кеширования:

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

Вы можете добавить типы файлов (или удалить некоторые из них) к списку в примере. Также можно использовать max-age для указания времени в секундах, для хранения ваших файлов в кеше.

8. Отключение кеширования для определенных типов файлов

Если вам не нужно кешировать определенные типы файлов, то можно просто не включать их в список. Однако, иногда файлы могут кешироваться даже если вы не объявили их в списке. В таких случаях можно отключить кеширование только для таких типов файлов. В большинстве случаев требуется отключать кеширование  для динамических файлов, таких как скрипты. Вот код:

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

Просто добавьте типы фалов, которые не нужно кешировать в список.

9. Пропускаем диалог загрузки

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

AddType application/octet-stream .pdf
 
AddType application/octet-stream .zip
 
AddType application/octet-stream .mp3

10. Переименование файла .htaccess

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

AccessFileName htac.cess

Также нужно обновить всех вхождения в самом файле и там, где упоминается .htaccess, иначе возникнет масса ошибок.

11. Изменение индексной страницы по умолчанию

Если вам требуется, чтобы индексная страница отличалась от значения по умолчанию, index.html, index.php, index.htm и так далее, то данная задача решается легко. Вот что нужно добавить в файл .htaccess:

DirectoryIndex mypage.html

Замените mypage.html на адрес URL нужной страницы.

12. Перенаправление на безопасное соединение https

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

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

13. Ограничение размера файла загрузки в PHP, максимального размера запроса и максимального времени выполнения скрипта

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

php_value upload_max_filesize 15M

 

Конечно, вы можете установить значение, которое требуется, в нашем примере 15M (MB) не является фиксированным. Также можно ограничить максимальны размер запроса для загрузки в PHP:

php_value post_max_size 10M

Измените 10M на то значение, которое вам требуется.

Если вы не хотите, чтобы скрипт выполнялся вечно, то можно ограничить время его работы:

php_value max_execution_time 240

240 – количество секунд до прерывания работы скрипта.

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

php_value max_input_time 180

14. Маскировка типов файлов

Иногда нужно скрыть от пользователя типы файлов на сервере. Один из способов решить задачу – замаскировать их. Например, вы можете сделать так. что все файлы будут выглядеть как HTML или PHP:

ForceType application/x-httpd-php
ForceType application/x-httpd-php

Заключение

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.