- Информация о материале
- Автор: Артемьев Евгений Викторович
- Категория: .htaccess
- Просмотров: 2550
О предназначении файла .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. Для задания разрешенных диапазонов 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. Запрет на просмотр директорий
Для предотвращения просмотра директорий сайта добавьте в .htaccess следующий код:
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
Кроме того, вы можете сжать все ваши JavaScript, HTML и 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\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
Не забудьте заменить yourdomain.com на имя вашего домена.
5. Блокировка посетителей, перешедших с определенного домена
Если вы не хотите видеть на своем сайте пользователей с конкретного домена, то вы можете запретить им доступ. Например, пользователей с нежелательных ресурсов (сайты для взрослых, хакерские сайты и т. д.) вы можете перенаправлять на страницу 403 Forbidden. Для этого необходимо включить mod_rewrite, хотя, как правило, он включен по умолчанию. Добавьте в .htaccess код:
<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 Forbidden. Если вы хотите запретить несколько сайтов, используйте флаги [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>
Вы можете добавить больше типов файлов (или удалить некоторые из них) в перечисленныq в данном примере список файлов. Вы также можете указать время сохранения файлов в кэше (в секундах) при помощи переменной 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 и хотите перенаправить пользователей на защищенные страницы вашего сайта, добавьте в файл .htaccess следующие строки:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
13. Ограничение максимального размера загружаемых файлов в PHP, максимального размера передаваемых данных, максимального времени выполнения скриптов и т.п.
.htaccess позволяет устанавливать некоторые значения, непосредственно влияющие на работу PHP приложений. Например, если вы хотите установить в PHP ограничение на размер загружаемых файлов, чтобы не забивать хостинг большими файлами:
php_value upload_max_filesize 15M
Вы можете установить любое значение, в примере размер файла ограничен 15M (MБ). Помимо этого вы можете ограничить максимальный размер передаваемых при загрузке в PHP данных:
php_value post_max_size 10M
Вы можете заменить 10М на любое требуемое вам значение. Если вам не требуется постоянное выполнение скриптов, вы можете ограничить время их выполнения с помощью строки:
php_value max_execution_time 240
240 — время выполнения (в секундах), после которого скрипт будет остановлен, вы можете изменить это значение на любое другое. Наконец, если вы хотите ограничить время анализа скриптом исходных данных, используйте следующий код:
php_value max_input_time 180
Установите вместо 180 любое требуемое вам время (в секундах).
14. Скрытие типов файлов
Иногда нужно, чтобы пользователи не знали, какие типы файлов находятся на вашем сайте. Один из способов скрыть эту информацию — сделать так, чтобы все ваши файлы отображались как HTML или PHP файлы:ForceType application/x-httpd-php
ForceType application/x-httpd-php
И это лишь часть того, что может .htaccess, а вообще он позволяет сделать гораздо больше. Например, вы можете установить автоматический перевод страниц вашего сайта, установить часовой пояс сервера, удалить WWW из URL-адресов или использовать причудливые представления каталогов и т.д. Но в любом случае, прежде чем начинать эксперименты с файлом .htaccess, всегда сохраняйте резервную копию оригинального .htaccess, чтобы при возникновении проблем можно было быстро восстановить работу сайта.
источник: https://habr.com/ru/post/165701/
- Информация о материале
- Автор: Артемьев Евгений Викторович
- Категория: .htaccess
- Просмотров: 3738
Прежде чем мы начнем, обращаю ваше внимание на тот факт, что злоупотребление использованием .htaccess может привести к снижению производительности вашего сайта. Главное правило: использовать .htaccess для реализации той или иной задачи стоит только в том случае, если нет других вариантов.
Убедитесь в том, что вы сделали резервную копию оригинального файла .htaccess для вашего сайта, прежде чем вносить какие-либо изменения. Кроме того, помните — работоспособность указанных ниже правил зависит от индивидуальных настроек вашего web-сервера, заданных хостером. Некоторые директивы могут быть запрещены и не работать.
.htaccess (от. англ. hypertext access) — файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д., без изменения главного конфигурационного файла.
Файл .htaccess может быть размещён в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess).
Для того чтобы эти файлы .htaccess можно было использовать, необходимы соответствующие настройки главного конфигурационного файла (значение директивы AllowOverride должно быть установлено All). Как правило, подавляющее большинство хостеров разрешают использовать свои файлы .htaccess.
1. Запрещаем загрузку файлов с внешних сайтов
Вам надоели люди, которые размещают картинки, опубликованные на вашем сайте — на своих ресурсах, тем самым расходуя ваш траффик и создавая ненужную нагрузку на ваш хостинг? Данный код, размещенный в конце вашего файла .htaccess, позволит предотвратить загрузку ваших изображений — сторонними сайтами.
Options +FollowSymlinks #Запрещаем загрузку файлов с внешних сайтов RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?site.com/ [nc] RewriteRule .*.(gif|jpg|png)$ http://site.com/stop.gif[nc]
Не забудьте изменить site.com на ваше доменное имя и создать изображение stop.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 браузеров, роботов и пауков поисковых машин, веб-каталогов, менеджеров закачек, спам-ботов и плохих ботов можно найти на сайте List of User-Agents.
3. Запрещаем доступ для всех, кроме указанных IP-адресов
Если по какой-либо причине, вы хотите запретить всем или разрешить только отдельным IP-адресам доступ к вашему сайту — добавьте этот код в ваш .htaccess-файл:
#Запрещаем доступ для всех, кроме указанных IP-адресов ErrorDocument 403 http://www.domainname.com Order deny,allow Deny from all Allow from 124.34.48.165 Allow from 102.54.68.123
Не забудьте изменить domainname.com на ваше доменное имя.
4. Настраиваем SEO-Friendly 301 Redirect
Если вы перенесли доменное имя (или свой подсайт) или хотите перенаправлять пользователя на определенную страницу (страницы), без санкций со стороны поисковых машин, используйте этот код:
#Настраиваем SEO-Friendly 301 Redirect Redirect 301 /1/file.html http://www.site.com/2/file.html
Не забудьте изменить site.com на ваше доменное имя, а /1/file.html и /2/file.html на соответствующие директории и страницы.
5. Создаем собственные страницы ошибок
Вам надоел стандартный вид страниц ошибок? Нет проблем — с помощью следующего кода, вы легко можете создать свою страницу и показывать пользователю именно ее:
ErrorDocument 401 /error/401.php ErrorDocument 403 /error/403.php ErrorDocument 404 /error/404.php ErrorDocument 500 /error/500.php
Не забудьте создать в корневой директории вашего сервера папку error и разместить в ней соответствующие файлы.
6. Создаем черный список IP адресов
Устали от спам-комментариев или определенного пользователя? Просто заблокируйте его IP с помощью следующего кода, добавляемого в .htaccess-файл.
#Создаем черный список IP адресов allow from all deny from 145.186.14.122 deny from 124.15.
Узнать IP адреса комментаторов можно или в логах Apache или с помощью сервисов статистики. У многих CMS есть свои встроенные средства для мониторинга адресов посетителей. Например, в Drupal IP- адреса комментаторов можно увидеть в административной панели — Отчеты.
7. Устанавливаем e-mail адрес по-умолчанию для администратора
Используйте данный код, для того, чтобы установить e-mail адрес по-умолчанию для администратора сервера.
#Устанавливаем e-mail адрес по-умолчанию для администратора ServerSignature EMail SetEnv SERVER_ADMIN default@domain<span< a=""> class="sh_selector">.com
8. Защищаем определенный файл
#Защищаем .htaccess файл <files .htaccess=""> order allow,deny deny from all </files>
9. Сжимаем элементы с помощью mod_deflate
#Сжимаем элементы с помощью mod_deflate <ifmodule mod_deflate.c=""> <filesmatch .(js|css)$=""> SetOutputFilter DEFLATE </filesmatch> </ifmodule>
10. Добавляем срок жизни в заголовки
Данный код позволяет добавить сроки жизни в заголовки:
#Добавляем срок жизни в заголовки <filesmatch .(ico|pdf|flv|jpg|jpeg|png|gif|swf)$=""> Header set Expires «Wed, 21 May 2010 20:00:00 GMT» </filesmatch>
11. Устанавливаем страницы по-умолчанию
#Устанавливаем альтернативную страницу по-умолчанию DirectoryIndex about.html
12. Защищаем паролем папки и файлы
#защита паролем файла <files secure.php=""> AuthType Basic AuthName «Prompt» AuthUserFile /pub/home/.htpasswd Require valid-user </files> #защита паролем папки resides AuthType basic AuthName «This directory is protected» AuthUserFile /pub/home/.htpasswd AuthGroupFile /dev/null Require valid-user
Однако в этом случае пароли будут хранится в открытом виде, что не слишком хорошо с точки зрения безопасности. Поэтому оптимальнее пароль зашифровать. Для этого воспользуйтесь сервисами генерации записей в файлы .htpasswd. Например, вот таким.
В нашем примере файл с паролями доступа лежит в корневой директории сайта и называется .htpasswd. Директория указывается от корня сервера и если путь будет некорректным — Apache, не получив доступа к файлу, откажет в доступе к папке любому пользователю — в том чилсе и тому, который ввел правильную пару логин:пароль.
13. Перенаправляем со старого домена — на новый
Используя .htaccess, вы можете настроить перенаправление со старого доменного имени на новое, добавив следующий код:
#Перенаправляем со старого домена old.com — на новый RewriteEngine On RewriteRule ^(.*)$ http://www.new.com/$1 [R=301,L]
Перенаправление используется в том случае, если вы переносите свой существующий сайт на новое доменное имя. В этом случае любой пользователь, который наберет в адресной строке www.old.com — будет перенаправлен на www.new.com.
14. Усиливаем кеширование
Использование этого правила не означает прямое ускорение загрузки вашего сайта. Оно предназначено для более быстрой загрузки сайта — для уже заходившего на него посетителя, путем отправки статуса 304 для тех элементов, которые не обновлялись.
Таким образом, при повторной загрузке страницы браузер посетителя не будет заново скачивать изображения, скрипты или CSS, а выведет те файлы, которые уже хранятся в его кеше. Вы можете изменить срок жизни кеша, путем корректирования его значения в годах (year), месяцах (month) или, например — секундах (seconds). В примере указан 1 год.
#Усиливаем кеширование FileETag MTime Size <ifmodule mod_expires.c> <filesmatch ".(jpg|gif|png|css|js)$"> ExpiresActive on ExpiresDefault «access plus 1 year» </filesmatch> </ifmodule>
15. Сжимаем компоненты сайта путем включения Gzip
При использовании Gzip, сервер будет сжимать файлы перед отправкой их пользователю, ввиду чего ваш сайт будет грузиться быстрее.
#Сжимаем компоненты сайта путем включения Gzip AddOutputFilterByType DEFLATE text/html text/plain .. .. text/xml application/xml application/xhtml+xml .. .. text/javascript text/css application/x-javascript BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4.0[678] no-gzip BrowserMatch bMSIE !no-gzip !gzip-only-text/html
Обратите внимание, что включение компрессии приведет к большей нагрузке на процессор сервера. Здесь строка AddOutputFilterByType записывается в одну длинную строчку с двумя нижними (все .. нужно убрать).
16. Удаляем «category» из URL
Для изменения ссылки yourdomain.com/category/blue на yourdomain.com/blue, просто добавьте следующий код в конце вашего .htaccess файла.
#Удаляем category из URL RewriteRule ^category/(.+)$ http://www.site.com/$1 [R=301,L]
Не забудьте изменить www.site.com на ваше доменное имя.
17. Запрещаем просмотр содержимого папки
Для того, чтобы ограничить доступ к директориям, которые могут содержать разнообразную информацию и для обеспечения безопасности сервера, добавьте этот код в файл .htaccess
#Запрещаем просмотр содержимого папки Options All —Indexes
18. Перенаправляем свою RSS-ленту на FeedBurner
Покажем как это можно сделать на примере RSS-ленты Drupal на сервис Google Feedburner.
#Перенаправляем RSS-ленту Drupal на FeedBurner <ifmodule mod_rewrite.c=""> RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC] RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC] RewriteRule ^rss.xml$ http://feeds.feedburner.com/yourfeed [R=302,NC,L] </ifmodule>
Изначально необходимо зарегистрировать ленту своего блога в сервисе Feedburner. Далее не забудьте заменить yourfeed на имя вашей ленты уже в Feedburner.
19. Запрещаем комментарии от пользователей без Referrer
Чаще всего спам-боты обращаются напрямую к файлу комментариев, например к wp-comments-post.php, не заходя на страницы записей вашего блога. Приведенный ниже код позволяет заблокировать комментарии, отправленные пользователями, которые пришли «из ниоткуда», позволяя комментировать только тем читателям, которые перешли на страницу вашего блога с каких-либо других страниц (например, результатов поиска Google).
#Запрещаем комментарии от пользователей без Referrer RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .comment\/reply\/* RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
Не забудьте заменить yourblog.com на доменное имя вашего блога.
20. Убираем расширение файла из URL
Данный код позволяет удалить расширение файла .php (вы можете изменить его на любое другое, например — .html) из URL-адресов страниц.
#Убираем расширение файла из URL RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]
21. Защищаем сайт
Данный код позволяет защитить сайт от scripts enjection и нежелательных модификаций _REQUEST и/или GLOBALS:
#Включаем отслеживание сим-ссылок Options +FollowSymLinks #Запускаем url_rewriting RewriteEngine On #Блокируем все ссылки, содержащие <script> 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]
22. Перенаправляем посетителя с помощью директивы RedirectMatch и регулярных выражений
Еще одна полезная директива, рекомендуемая к использованию — RedirectMatch. Цитата: «Эта директива позволяет в качестве запрашиваемого адреса использовать регулярное выражение (пересылка не „с документа“, а „со всех документов, типа ...“). Редирект внешний — браузеру сообщается о необходимости загрузить другую страницу.
Синтаксис:
RedirectMatch [status] regexp URL
Значения статусов (код возврата веб-сервера) стандартные:
permanent (301 — постоянный редирект), temp (302 — временный редирект, приходите ещё), seeother (303 — летим туда, там много вкусного), gone (410 — удалён навсегда).
Пример:
То же перенаправление со старого домена на новый без подключения RewriteEngine:
RedirectMatch 301 ^(.*)$ www.domainname.com/$1
От себя добавлю, что вы можете использовать не только http-статусы, но и другие условия:
RedirectMatch (.*)\.gif$ http://www.myserver.com$1.png RedirectMatch (.*\.jpg)$ http://www.myanother.com$1
Обязательно сделайте резервную копию файла .htaccess до внесения изменений и проверьте работоспособность всего сайта — после добавления новых строк.
23. Защита от прямых ссылок для изображений через .htaccess
Хотлинк (Hotlink) — вставка прямых ссылок изображений или файлов с одного сайта на другие. Этот прием используется довольно часто, ну например, у вас на сервере не хватает места для хранения картинок и вы пользуетесь каким-либо бесплатным сервисом для хранения файлов изображений, т.е. загружаете картинку, получаете URL и вставляете его на свой сайт.
В итоге: вы сохраняете место для вашего сайта и используете пропускную способность хостинга для картинок, но это уже не ваше дело. Но вот как быть, если кто-то решил, что ваш сайт можно использовать как подобный сервис.
Как не стать бесплатным поставщиком изображений и файлов?
Есть ли защита от этого? Да, есть! Чтобы запретить другим сайтам пользоваться вашим трафиком и/или просто указывать прямые ссылки на ваши файлы (картинки), то добавьте в ваш .htaccess файл следующие строки:
# Запретить другим сайтам использовать прямые ссылки на ваши картинки RewriteCond %{HTTP_REFERER} !^$ # Дальше список разрешенных доменов RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?sitename.ru.*$ [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?sitename.ru:80.*$ [NC] # IP сайта (домена) RewriteCond %{HTTP_REFERER} !^http(s)?://111.111.111.111.*$ [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://111.111.111.111:80.*$ [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yandex.ru [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google. [NC] # RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?домен_дружественного сайта.ru [NC] RewriteCond %{HTTP_REFERER} !search?q=cache [NC] # Форматы файлов, для которых устанавливается защита # Выводит ошибку 403 # RewriteRule \.(jpe?g|bmp|gif|png|css|mov|swf|dcr|exe|rar|avi|vob|zip|pdf|txt|doc|flv|mp3|mp4)$ — [NC,F,L] # или показывает спецрисунок вместо указанного RewriteRule .*\.(jpe?g|bmp|gif|png)$ files/images/nohotlink.jpg [NC,L]
В итоге все остальные сайты получат ошибку 403 Forbidden (т.е. Доступ запрещен) и ваша пропускная способность больше «не работает на других».
24. ImageCache и защита от хотлинка через .htaccess
Для ImageCache предыдущий пункт работать не будет, поэтому добавляем такие настройки:
SetEnvIfNoCase Referer «^$» local_ref=1 # Allowed domains # Далее разрешенные домены SetEnvIfNoCase Referer «^http://(www\.)?domain\.ru» local_ref=1 SetEnvIfNoCase Referer «^http://(www\.)?domain\.com» local_ref=1 # File extensions that you want to protect # Расширения файлов, которые нужно защитить <FilesMatch "\.(bmp|jpe?g|gif|png)"> Order Allow,Deny Allow from env=local_ref </FilesMatch>
Теперь у нас есть и защита от хотлинка и модуль ImageCache — вместе они работают превосходно. Одно «но» — таким способом, как вы видите не получится выдавать другую картинку; только защита своих изображений, что и является основной целью.
25. Мало этого?
Вот лучшие и подробные ресурсы по магическому .htaccess в Интернете:
- Энциклопедия по .htaccess по-русски;
- Apache htaccess official tutorial;
- Других 12 полезных трюков в .htaccess;
- Практические решения по использованию файла .htaccess;
- Comprehensive guide to .htaccess;
- Вводное руководство по .htaccess файлам;
- Попытка номер раз создать почти идеальный .htaccess.
источник: http://www.blogerator.org/page/fajl-primery-htaccess-redirekt-dostup