Полезные хаки и сниппеты для .htaccess / Habr
Это перевод очень интересной лично для меня статьи, которым я хочу поделиться с уважаемым хабрасообществом. Некоторые из приведенных рецептов я уже встречал на Хабре, но разрозненно и далеко не все из нижеприведенного.
О предназначении файла .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, чтобы при возникновении проблем можно было быстро восстановить работу сайта.
Источник
UPD (спасибо akuma) расширение РНР для скрытия формата файлов приведено как пример и использование этого трюка в реальном проекте может оказаться небезопасным
habr.com
Как настроить запрет доступа к файлу, каталогу и сайту через htaccess
Многие пользователи серверов Apache для настройки работы сайта используют файл конфигураций htaccess. С одной стороны, нельзя назвать это решение мудрым и стоящим, поскольку чересчур наполненный файл htaccess может навредить скорости работы сервера. Но некоторые опции этого конфигурационного документа сложно настроить без использования файла htaccess, например, ограничение доступа к файлу, каталогу или сайту в целом. В приведенной ниже статье вы узнаете, как использовать эту функцию файла htaccess, и для чего она нужна.
Кому нужен запрет доступа и как им пользоваться
Стоит учитывать, что файл htaccess позволяет не только делать запрет доступа сразу ко всему сайту, но и создавать белые и черные списки пользователей. То есть вы сможете, к примеру, закрыть доступ для некоторых IP. Точно так же вы сможете снять запрет только для выбранных вами IP, создав тем самым белый список пользователей. Но зачем вообще использовать эту функцию?
Порой обстоятельства так складываются, что к сайту нельзя никого подпускать. К примеру, когда на нем ведутся какие-то важные техработы. В этот момент вы можете заблокировать доступ для каждого пользователя, кроме своего IP. Тогда посетители не будут присутствовать на ресурсе, когда он в нестабильном состоянии. Кроме того, используя черный список пользователей, вы сможете запретить доступ к сайту для IP недоброжелательных посетителей, которые спамят, флудят, ругаются и плохо обзываются о вашем портале.
Таким образом, вы сможете закрыть свой сайт от нежеланных гостей, создав подобие бан-листа. И во всем этом вам поможет файл htaccess с его незаменимыми директивами.
Как запретить доступ к файлу, каталогу, сайту через htaccess
Для управления уровнем доступа к сайту, файлу или папке вам необходимо будет использовать директивы Deny и Allow. Первая директива нужна, чтобы запретить доступ, а вторая — чтобы разрешить. Во многом эти директивы зависят от того, куда вы поместите файл htaccess. Если он будет расположен в корневом каталоге, то запрет или разрешение будет действовать на весь сайт целиком. Если же вы загрузите htaccess в какую-то папку, то опции Deny и Allow будут действовать на каталог, в котором находится, а также на внутренние папки. Именно таким образом и блокируют доступ к определенным директориям и разделам сайта.
Синтаксис директив запрета и разрешения предельно прост. Начинать опцию следует со строки Order Deny, Allow. Она обозначает активацию функций Deny и Allow. А в следующих строках вы должны указать конкретно, какие условия доступа вы планируете установить. Так, чтобы закрыть доступ для всех, вам нужно прописать всего две строки:
Order Deny,Allow - открытие функции.
Deny from all - указание правила.
Нижняя строка говорит: «Запретить (deny) для (from) всех (all)». Точно таким же образом вы можете вместо Deny прописать Allow для активации противоположной опции. Но поскольку эта опция активирована по умолчанию, нет смысла ее дополнительно указывать в htaccess. Allow from скорее используют для того, чтобы указывать исключения, то есть чтобы сформировать белый список пользователей.
Чтобы открыть доступ только для некоторых IP, вам нужно сначала закрыть сайт или каталог для всех остальных. Вот пример создания белого списка для двух адресов IP:
Order Deny,Allow
Deny from all
Allow from 136.68.81.3, 135.67.82.1 - IP писать через запятую.
По аналогии с написанной функцией вы сможете блокировать только определенные адреса IP. Только для этого вам нужно будет сначала прописать разрешение для всех через Allow from all, а потом указывать через Deny from IP-адреса, либо названия хостов, для которых доступ строго воспрещен.
Для ограничения прав на файл через закрытие доступа, вам нужно создать отдельный документ htaccess, и поместить его в директорию, где содержится файл. Директива запрета для файла выглядит примерно так же, как опция ограничения доступа для сайта или каталога. Разница только в том, что для ограничения файла вам понадобится специальный тег . В открывающем теге необходимо указать название объекта, доступ к которому следует ограничить. Вот пример запрета для всех пользователей к файлу passvd.txt:
<Files "passvd.txt"> - тег с именем файла
Order Deny,Allow - открытие опции
Deny from all - правило директивы
</Files> - закрытие тега
Теперь вам осталось поместить htaccess в каталог, где содержится файл passvd.txt, и никто не сможет добраться к нему через сайт. Как показывает практика, обычно доступ к файлу блокируют не полностью, а указывают исключения для доверенных IP-адресов. К примеру, вы сможете указать ограничение для всех, кроме своего IP, чтобы вы смогли потом скачать файл с паролями. Вот пример такого ограничения:
<Files "passvd.txt">
Order Deny,Allow
Deny from all
Allow from 144.66.55.2
</Files>
Если в каталоге содержится не один файл, который вам нужно защитить, а несколько, то вы можете прописать сразу много директив для каждого отдельного объекта. Но это неудобно. Кроме того, много опций в htaccess нагружают сервер, потому куда разумнее активировать другую блокировку — запрет доступа по типу файлов в каталоге, а не по их наименованию. Вам нужно будет использовать точно такую же конструкцию директив, только вместо имени файла необходимо через символ «|» указывать расширения, которые пользователи не смогут скачать с данной папки. Вот пример тег запрета для загрузки картинок определенного формата:
<Files "\.(jpg|jpe?g|ico)$">
Директивы
</Files>
Чтобы сделать запрет для других форматов, вам нужно будет лишь сменить названия расширений в скобках. Сделать это несложно, как и указать белый или черный список пользователей. Сама конструкция в кавычках всегда остается одинаковой.
Учтите, что многие пользователи используют не статический IP, а динамический, потому указывать один адрес в запрете глупо. Куда разумнее писать в запрет диапазон IP-адресов. Для этого найдите Whois-сервис и определите CIDR IP-адреса, а затем укажите его в запрете. Тогда даже при временной смене адреса, пользователь не сможет зайти на портал.
Похожие статьи
e-webmaster.ru
Запрет доступа к файлам определенных типов в htaccess
Вы здесь: Главная — Запрет доступа к файлам определенных типов в htaccess
При создании сайтов периодически возникает необходимость запретить прямой доступ к файлам определенных типов. Сделать это можно различными путями, обо одном из таких способов я как-то писал здесь. Но тогда использовался mod_rewrite, а здесь я буду использовать другой вариант.
Представим, что у нас есть набор файлов определенных типов, к которым мы хотим запретить доступ. Для этого нужно прописать в
// Список расширений файлов
<FilesMatch ".(htaccess|htpasswd|docx|pdf|xls|xlsx|log)$">
Order Allow,Deny
Deny from all
</FilesMatch>
Таким образом, доступ к любым документам, файлам логов, файлам настройки веб-сервера прямым доступом по ссылке будет запрещен.
- Создано 28.05.2019 10:46:19
- Михаил Русаков
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
-
Кнопка:
<a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru//images/button.gif» alt=»Как создать свой сайт» /></a>Она выглядит вот так:
-
Текстовая ссылка:
<a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи):
[URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]
Файл .htaccess. Ограничение доступа, защита файлов, доступ по паролю
Файл дополнительной конфигурации .htaccess так же часто используют для ограничения доступа к сайту, разделам сайта или конкретным файлам, находящимся на сервере.
Чтобы запретить доступ ко всему сайту, необходимо в файле .htacces написать следующее:
deny from all
Запретить доступ только с конкретного ip-адреса:
deny from all
order allow deny
deny from all
deny from ip_адрес_пользователя
«ip_адрес_пользователя» необходимо заменить на конкретный ip-адрес.
Чтобы разрешить доступ только с конкретного ip-адреса, можно написать:
order allow deny
deny from all
allow from ip_адрес_пользователя
Так же с помощью файла .htaccess можно запретить доступ к конкретному файлу. Например, запретим доступ пользователей к самому файлу .htaccess. При этом сервер сможет использовать инструкции, указанные в файле:
< Files .htaccess >
order allow,deny
deny from all
Наверное, всем пользователям интернета попадались одинаковые статьи на различных сайтах. Очень часто бывает, что эти статьи попросту сворованы с других ресурсов. Поисковые системы стараются бороться с дублированными страницами, но выбор ими первоисточника не всегда оказывается верным. И это является серьезной проблемой для копирайтеров и веб-мастеров, так как на написание качественного контента, порой, уходит большое количество сил и времени, и очень неприятно обзавестись штрафными санкциями поисковиков за то, что кто-то скопировал контент с Вашего сайта. А зачастую, вместе с текстом воруют так же и изображения. Причем, многие воры, чтобы не перегружать свой сервер, не скачивают изображение с чужих сайтов, а просто ссылаются на файлы, находящиеся на сайте-первоисточнике. Вставка ссылки на файл, находящийся на другом сайте называется хотлинком (hotlink). Помимо ссылок на изображения этого могут быть так же ссылки и на другие файлы, например, доступные для скачивания. Такие хотлинки не только крайне неприятны для автора контента. Они так же перегружает сервер первоисточника.
Защитить файлы от хотлинка при помощи файла .htaccess можно добавив в него две строчки:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?ваш_сайт.ru.*$ [NC]
RewriteRule \.(jpe?g|bmp|gif|png|css|zip|pdf|txt|doc)$ — [NC,F,L]
В скобочках через символ «|» указаны расширения файлов, доступ к которым будет запрещен всем, за исключением сервера и пользователей сайта ваш_сайт.ru
Чтобы открыть доступ к файлам с этим расширением для пользователей поисковых систем необходимо исключить на них запрет так же, как на ваш_сайт.ru:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?ваш_сайт.ru [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yandex.ru [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yahoo. [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google. [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?bing. [NC]
RewriteRule \.(jpe?g|bmp|gif|png|css|zip|pdf|txt|doc)$ — [NC,F,L]
При помощи файла дополнительной конфигурации .htacces возможно установить пароль на директорию сайта, конкретный файл или группу файлов с одинаковым расширением. Чтобы установить пароль на директорию, в .htaccess необходимо написать:
AuthName «What do you want?«
AuthType Basic
AuthUserFile /home/сервер/ваш_сайт.ru/pass/.htpasswd
require valid-user
Файл .htaccess, содержащий эти строки необходимо поместить в директорию, доступ к которой мы хотим закрыть. При попытке пользователя зайти на соответствующий раздел сайта сервер отдаст код статуса 401 (требуется авторизация) и выведет окно с полями для ввода имени пользователя и пароля и сообщением «What do you want?», указанным в директиве «AuthName» (допускаются только латинские символы и цифры).
Имена пользователей и пароли хранятся в файле .htpasswd. Путь к этому файлу задается в директиве «AuthUserFile».
Важно: путь к файлу .htpasswd указывается абсолютный, от корневого каталога сервера.
Чтобы узнать путь к .htpasswd, который необходимо указать в .htaccess, можно создать файл php, содержащий:
< ?php echo $_SERVER[‘DOCUMENT_ROOT’]; ? >
Закачать этот файл на сервер туда же, где находится .htpasswd, и открыть его в браузере. В сгенерированной странице Вы увидите абсолютный путь к директории, указанный от корневого каталога сервера.
Установить пароль на конкретный файл можно следующим образом:
< Files file.txt >
AuthName «It’s not for all»
AuthType Basic
AuthUserFile /home/сервер/ваш_сайт.ru/pass/.htpasswd
Пароль на группу файлов:
< Files «\.(sql)$» >
AuthName » It’s not for all «
AuthType Basic
AuthUserFile /home/сервер/ваш_сайт.ru/pass/.htpasswd
В данном случае все файлы, имеющие расширение .sql будут доступны только по паролю.
Статья полезна? Поделитесь с друзьями:
к списку статей>>
www.yellow-elephant.ru
Ограничение доступа при помощи файла .htaccess
Файл дополнительной конфигурации .htaccess так же часто используют для ограничения доступа к сайту, разделам сайта или конкретным файлам, находящимся на сервере.
Чтобы запретить доступ ко всему сайту, необходимо в файле .htacces написать следующее:
deny from all
Запретить доступ только с конкретного ip-адреса:
deny from all
order allow deny
deny from all
deny from ip_адрес_пользователя
«ip_адрес_пользователя» необходимо заменить на конкретный ip-адрес.
Чтобы разрешить доступ только с конкретного ip-адреса, можно написать:
order allow deny
deny from all
allow from ip_адрес_пользователя
Так же с помощью файла .htaccess можно запретить доступ к конкретному файлу. Например, запретим доступ пользователей к самому файлу .htaccess. При этом сервер сможет использовать инструкции, указанные в файле:
< Files .htaccess >
order allow,deny
deny from all
Защита файлов
Наверное, всем пользователям интернета попадались одинаковые статьи на различных сайтах. Очень часто бывает, что эти статьи попросту сворованы с других ресурсов. Поисковые системы стараются бороться с дублированными страницами, но выбор ими первоисточника не всегда оказывается верным. И это является серьезной проблемой для копирайтеров и веб-мастеров, так как на написание качественного контента, порой, уходит большое количество сил и времени, и очень неприятно обзавестись штрафными санкциями поисковиков за то, что кто-то скопировал контент с Вашего сайта. А зачастую, вместе с текстом воруют так же и изображения. Причем, многие воры, чтобы не перегружать свой сервер, не скачивают изображение с чужих сайтов, а просто ссылаются на файлы, находящиеся на сайте-первоисточнике. Вставка ссылки на файл, находящийся на другом сайте называется хотлинком (hotlink). Помимо ссылок на изображения этого могут быть так же ссылки и на другие файлы, например, доступные для скачивания. Такие хотлинки не только крайне неприятны для автора контента. Они так же перегружает сервер первоисточника.
Защитить файлы от хотлинка при помощи файла .htaccess можно добавив в него две строчки:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?ваш_сайт.ru.*$ [NC]
RewriteRule \.(jpe?g|bmp|gif|png|css|zip|pdf|txt|doc)$ — [NC,F,L]
В скобочках через символ «|» указаны расширения файлов, доступ к которым будет запрещен всем, за исключением сервера и пользователей сайта ваш_сайт.ru
Чтобы открыть доступ к файлам с этим расширением для пользователей поисковых систем необходимо исключить на них запрет так же, как на ваш_сайт.ru:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?ваш_сайт.ru [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yandex.ru [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yahoo. [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google. [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?bing. [NC]
RewriteRule \.(jpe?g|bmp|gif|png|css|zip|pdf|txt|doc)$ — [NC,F,L]
Защита паролем
При помощи файла дополнительной конфигурации .htacces возможно установить пароль на директорию сайта, конкретный файл или группу файлов с одинаковым расширением. Чтобы установить пароль на директорию, в .htaccess необходимо написать:
AuthName «What do you want?»
AuthType Basic
AuthUserFile /home/сервер/ваш_сайт.ru/pass/.htpasswd
require valid-user
Файл .htaccess, содержащий эти строки необходимо поместить в директорию, доступ к которой мы хотим закрыть. При попытке пользователя зайти на соответствующий раздел сайта сервер отдаст код статуса 401 (требуется авторизация) и выведет окно с полями для ввода имени пользователя и пароля и сообщением «What do you want?», указанным в директиве «AuthName» (допускаются только латинские символы и цифры).
Имена пользователей и пароли хранятся в файле .htpasswd. Путь к этому файлу задается в директиве «AuthUserFile».
Важно: путь к файлу .htpasswd указывается абсолютный, от корневого каталога сервера.
Чтобы узнать путь к .htpasswd, который необходимо указать в .htaccess, можно создать файл php, содержащий:
< ?php echo $_SERVER[‘DOCUMENT_ROOT’]; ? >
Закачать этот файл на сервер туда же, где находится .htpasswd, и открыть его в браузере. В сгенерированной странице Вы увидите абсолютный путь к директории, указанный от корневого каталога сервера.
Установить пароль на конкретный файл можно следующим образом:
< Files file.txt >
AuthName «It’s not for all»
AuthType Basic
AuthUserFile /home/сервер/ваш_сайт.ru/pass/.htpasswd
Пароль на группу файлов:
< Files «\.(sql)$» >
AuthName » It’s not for all «
AuthType Basic
AuthUserFile /home/сервер/ваш_сайт.ru/pass/.htpasswd
В данном случае все файлы, имеющие расширение .sql будут доступны только по паролю.
avg-it.ru
Для чего служит .htaccess? |
Набирая адрес в строке браузера, вы получаете на свой компьютер файлы, которые отображает браузер. Управление тем, какие файлы и как вам показывать (пересылать) осуществляет веб-сервер. Наиболее популярных серверов два: IIS и Apache. |-user | | | -user1 | | | -user2 | |-data | | | -data1 | | | -data2 | Директории user1 и user2 будут вложенными по отношению к директории user. Если мы поместим в директорию www файл .htaccess, то его действие будет автоматически распространяться и на директории user1 и user2. |
Синтаксис .htaccess |
Вот обязательной синтаксис, несоблюдение которого приводит к ошибкам сервера: Файл имеет название именно «точка» htaccess |
Как запретить веб-посетителям читать файлы в директории? |
Запрет на все файлы: Разрешить доступ с определенного ip: Запретить доступ с определенного ip: В зависимости от того в каком порядке указаны директивы меняется логика работы сервера. В случае если Deny,Allow то запрещается доступ со всех IP кроме оговоренных, в случае если Allow,Deny разрешается доступ со всех IP кроме оговоренных. Далее должны идти секции описания для доступа и запрета. Ключевое слово all означает со всех IP Например мы хотим запретить (блокировать) доступ с IP 81.222.144.12 и 81.222.144.20 и разрешить всем остальным нам необходимо добавить в .htaccess следующий код: Order Allow,Deny Для обратной ситуации когда мы хотим запретить доступ со всех IP кроме 81.222.144.12 и 81.222.144.20 нам необходимо добавить в .htaccess следующий код: Order Deny,Allow Чтобы разрешить только в частности хостов или групп хостов для доступа к серверу, хост может быть указан в любом из следующих форматов:
Запрет на группу файлов по маске: В данном примере сам веб-сервер Апач может обращаться к файлам с таким расширениям. Запрет на конкретный файл: Пароль на директорию: Например в директории, которую защищаем паролем создаем такой .htaccess: Пароль только на 1 файл:сайт источник http://yapro.ru Tue Feb 09 2010 15:44:59 GMT+0300 Пароль на группу файлов: |
Проверка прав доступа |
Задача: есть каталог a1 и в нем два вложенных каталога a2, a3, введено 2 уровня пользователей. 1 группа имеет доступ только к a1 и a2, 2-я ко всем трем каталогам. Необходимо проводить аутентификацию только 1 раз — при доступе к a1, но при этом соблюдать права на доступ к а2 и а3. файл .htaccess для каталога а1: |
Как сделать перенаправление (редирект) посетителя? |
Редирект на другой url: Показ разных страниц, в зависимости от IP адреса посетителя: Перенаправление посетителя при запросе определенных страниц: |
Как сделать стартовой другую страницу? |
Что бы поменять страницу, которая будет показываться при обращении к директории, пишем: |
Как заставить Апач обрабатывать SSI директивы? |
SSI позволяют «собирать» страницу из кусочков. В одном кусочке у вас код меню, в другом код верхней части страницы, в третьем — нижней. А посетитель видет обычную страницу, которая состоит из того кода, который входит в ваши кусочки. После, в файле .htaccess пишем: |
Как заставить Апач выполнять в html документах php код? |
Иногда бывает полезно «обмануть» посетителя, выдавая ему свои php-скрипты или иные файлы, как html файлы. Реально используется для индексации поисковой системой Rambler php-скриптов. Некоторые делаю мелкие фишки, вроде того, что дают фалам расширения совпадающие с какими-либо «знаковыми» именами. Например, на сайте www.osg.ru используются файлы с расширением osg: index.osg, script.osg и т.п. |
Как самому обрабатывать ошибки Апача? |
Наиболее интересные и полезные ошибки Апача это: 403-404, 500. Удобно делать собственный обработчик на некоторые ошибки. В .htaccess пишем: |
Как поставить запрет на отображение содержимого директории при отсутствии индексного файла? |
Предположим, что у вас вся графика, используемая на сайте находится в директории img. Посетитель может набрать в адресной строке браузера эту директорию и увидеть список всех ваших графических файлов. Конечно, это не нанесет вам урона, но можно и не дать такого просмотра посетителю. В .htaccess пишем: Options -Indexes |
Можно ли указать кодировку на все файлы, в которой по умолчанию получает документы браузер? |
На заре интернета и зарождения браузеров, часто была ситуация, что браузер не мог автоматически определить, в какой из русских кодировок написан документ и в браузер выдавалась какая-то каша. Для избежания этого указываем, что все отдаваемые страницы будут иметь кодировку windows-1251: |
Можно ли указать кодировку на загружаемые файлы? |
При загрузке посетителем файла на сервер, возможна перекодировка его — указываем, что все получаемые файлы будут иметь кодировку windows-1251: |
Создал файл .htaccess, но сервер выдает 500 ошибку — Internal Erorr |
Ошибка синтаксиса или файл записан не в том формате. |
yapro.ru
запретить прямой доступ к папке и файлу с помощью htaccess PHP Lang
Я хочу ограничить прямой доступ пользователей к файлам в папке include с помощью htaccess. также для submit.php
. Но include будет работать для файла index.php
. Например, если пользователь набирает www.domain.com/includes/somepage.php
, он будет ограничивать его (может быть перенаправлен на страницу с ошибкой).
Я бы просто переместил папку include из веб-корня, но если вы хотите заблокировать прямой доступ к целой папке, вы можете поместить файл .htaccess
в эту папку, которая содержит:
deny from all
Таким образом, вы не можете открыть какой-либо файл из этой папки, но вы можете включить их в php без каких-либо проблем.
Это чистое решение на основе mod_rewrite
:
RewriteRule ^(includes/|submit\.php) - [F,L,NC]
Это покажет запрещенную ошибку, если URI содержит либо /includes/
или /submit.php
Можно использовать директиву «Файлы» и запретить доступ ко всем файлам, а затем использовать ее снова, чтобы установить доступные файлы:
<Files ~ "^.*"> Deny from all </Files> <Files ~ "^index\.php|css|js|.*\.png|.*\.jpg|.*\.gif"> Allow from all </Files>
Если я правильно понимаю, вы просто хотите запретить доступ к папке include?
Хит-доступ с директивой «DENY FROM ALL», помещенной в папку include, сделает трюк.
Ваш Q состоит из двух частей: решения для jeroen и anubhava работают для части I – отказ в доступе к / включает. Анубхава также работает для части II. Я предпочитаю последнее, потому что в DOCROOT/.htaccess
случае я использую DOCROOT/.htaccess
и это сохраняет все такое управление в одном файле.
Однако то, что я хотел обсудить, – это понятие «отказ в доступе к submit.php
». Если вы не хотите использовать submit.php
то зачем вообще это делать в DOCROOT? Я подозреваю, что ответ здесь заключается в том, что вы используете его как цель действия в некоторых формах и только хотите, чтобы он был запущен, когда форма была отправлена, а не напрямую, например, из спамбота.
Если это так, вы не можете использовать часть II anubhava, так как это приведет к сбою вашей формы. Что вы можете сделать здесь: (i) с проверкой .htaccess
чтобы убедиться, что referrer – ваша собственная индексная страница:
RewriteCond %{HTTP_REFERRER} !=HTTP://www.domain.com/index.php [NC] RewriteRule ^submit\.php$ - [F]
И (ii) в вашем генераторе формы PHP index.php есть некоторые скрытые поля для отметки времени и проверки. Валидацией могут быть, скажем, первые 10 символов MD5 временной метки и некоторый внутренний секрет. При обработке submit вы можете (i) проверить соответствие метки времени и валидации, и (ii) отметка времени находится, например, в течение 15 минут текущего времени.
Это позволяет предотвратить спам как единственный практический способ, с помощью которого спамер может получить действительную пару временной отметки / проверки, – это проанализировать форму, но эта царапина будет иметь только 15-минутную жизнь.
1 решение на основе линейки mod_alias:
RedirectMatch 403 ^/folder/file.php$
Это покажет запрещенную ошибку для /folder/file.php
В зависимости от возможных других параметров, установленных на более высоком уровне, вам может потребоваться поместить следующее в ваш файл .htaccess в ваш каталог include:
Satisfy all Order deny,allow Deny from all
Я столкнулся с этим, когда верхний каталог определил базовую аутентификацию, включая строку:
Satisfy any
Это мешало моему отказу от всех вступить в силу, потому что пользователи были аутентифицированы.
ruphp.com