Htaccess закрыть доступ к файлу пример. Ограничение доступа при помощи файла.htaccess

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

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

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

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

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

Order deny,allow deny from all allow from xxx.xxx.xxx.xxx

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

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

order allow,deny deny from all

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

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

Order Allow,Deny Deny from all

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:

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.*

4. Защищаем сайт от хотлинкинга

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

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

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

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

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

RewriteEngine on RewriteCond %{HTTP_REFERER} bannedurl1.com RewriteCond %{HTTP_REFERER} bannedurl2.com RewriteRule .* - [F]

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

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

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

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

Header set Cache-Control "max-age=2592000"

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

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

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

Header unset Cache-Control

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

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 всегда нужно сделать резервную копию оригинала, чтобы была возможность вернуться к исходному коду.

Внимание!
Надеюсь, вы догадаетесь сделать копию существующего файла .htaccess , а уж потом будете производить свои эксперименты.
Если вам не понравится результат своего творчества, просто верните старый на место. Пусть это будет вспомогательный файл, перегруженный может тормозить сервер. Генератор.htaccess

.htaccess

Файл.htaccess содержит пользовательские настройки web-сервера и анализируется при каждом запросе на сервер.
На виртуальном хостинге чаще всего используется для:
  • паролирования директорий,
  • переадресации страниц,
  • настройки собственных страниц ошибок,
  • определения кодировки,
  • запреты и разрешения,
  • и др.
Это гибкая настройка веб-сервера Апач.
С помощью него можно переопределить многие директивы из файла httpd.conf (главный конфигурационный файл сервера Апач).
Если файл.htaccess расположен в корневой директории сервера, то его действия распространяется на весь сервер, кроме тех папок, где находится другой файл.htaccess.

Редактор

Создать файлы.htaccess можно в Блокноте или встроенном редакторе Far, WindowsCommander, TotalCommander.
Я его редактирую с Notepad++ или Akelpad, которые использую для написания этого сайта.

Кодировка

Как выставить русскую кодировку. AddDefaultCharset utf-8
Определение кодировки на определенные типы файлов AddType "text/html; charset=koi8-r" .html .htm .shtm Определение кодировки на загружаемые файлы CharsetSourceEnc utf-8 Отключение перекодировки если при загрузке скриптом не загружаются (бьются) бинарные файлы (картинки, архивы), создайте файл.htaccess и поместите его папку, где вы хотите отключить функцию, в нем пропишите строчку: CharsetRecodeMultipartForms off
AddDefaultCharset UTF-8

Назначение стартовой страницы. DirectoryIndex index.html Можно указывать несколько страниц. DirectoryIndex index.html index.php index.shtml map.html При запросе каталога они будут искаться в том порядке, в котором перечислены в директиве DirectoryIndex. Если не будет найден файл index.html, то будет произведен поиск файла index.php и т.д.

Разрешение/запрет

разрешить доступ с определенного ip. order allow deny
deny from all
allow from 000.000.000.000
запретить доступ с определенного ip. order allow deny
allow from all
deny from 000.000.000.000
запретить просмотр всем. deny from all разрешить просмотр всем. allow from all Запретить доступ к определенному файлу.
deny from all
Запретить доступ к файлам с определенным расширением.
deny from all
Запретить доступ к файлам нескольких расширений.
deny from all
? - любой одиночный символ
* - любая последовательность символов, исключая символ / (слеш). Тонкая настройка доступа. Есть каталог a1 и в нем два вложенных каталога a2, a3, введено 2 уровня пользователей. 1 группа имеет доступ только к a1 и a2, 2-я ко всем трем каталогам. Необходимо проводить аутентификацию только 1 раз - при доступе к a1, но при этом соблюдать права на доступ к а2 и а3.
Ник и пароль запрашиваются только при входе на а1 - если у юзера есть доступ на а2 пароль уже не запрашивается. Если на а3 доступа нет, вылетит табличка "введите пароль". www.site.ru/a1
www.site.ru/a1/а2
www.site.ru/a1/a3
a1 - общий и вместе с тем закрытый. а2 и а3 только для отдельных личностей. файл.htaccess для каталога а1: AuthName "Input password"
AuthType Basic


require valid-user

Файл.htaccess для каталога а2: AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/login/htdocs/clousearea/.htpasswd"

require user юзер1 юзер2 юзер3
файл.htaccess для каталога а3: AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/абв/htdocs/clousearea/.htpasswd"

require user юзер1 юзер4 юзер5

Перенаправление (редирект)

Пути к файлам и директориям должны указываться от корня сервера, например, /pub/home/server1/html/
В именах доменов обязательно должны быть указаны протоколы (http://, http://, ftp://) Если вы не знаете путь от корня сервера, то Вы можете его узнать, спросив у администратора сервера, либо можете посмотреть сами, запустив на сайте функцию PHP - phpinfo() . Она выведет на экран конфигурацию PHP в виде фиолетовых таблиц. В них Вам необходимо найти переменную doc_root и посмотреть ее значение - это будет путь от корня сервера до вашей основной директории. Перенаправление (редирект) только при запросе определенных страниц. Redirect /location/from/root/file.ext http://www.serv.ru/new/file/location.xyz /location/from/root/file.ext - это путь до корневого файла (до нужного файла). www.serv.ru/new/file/location.xyz это место, куда попадет пользователь сделав запрос на файл file.txt. Если файл лежит в корневом каталоге, то вместо location/from/root/ можно сразу поставить: /oldfile.html ну и если файл в субкаталоге, то будет выглядеть так: /old/oldfile.html Редирект на папку (напр. папка oldfolder). Redirect /oldfolder http://www.serv.ru/newfolder запрос на www.oldserv.ru/oldfolder/images/smile.gif ,
попадет на www.serv.ru/newfolder/images/smile.gif . Глобальное перенаправление (редирект) на другой адрес. Redirect / http://www.newsite.ru Перенаправление (редирект) только посетителей с определенным IP-адресом. SetEnvIf REMOTE_ADDR 192.145.121.1 REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /only_for_you.html

Убираем WWW

Дело в том, что люди могут набирать адрес вашего сайта по-привычке с WWW. или экономя время без WWW.
Для Яндекса и Google http://your-site.com и http://www.your-site.com - разные сайты. И у вас, как следствие будет заниженный индекс цитирования. Это решается следующим кодом. Если вы хотите, чтобы ваш адрес был всегда с WWW. (привычнее), то код: RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^your-site.com$
RewriteRule ^(.*)$ http://www.your-site.com/$1
Вместо your-site.com пишем свой адрес.

Пароль

Защита паролем. AuthName "Section Name" AuthType Basic AuthUserFile /full/path/to/.htpasswd Require valid-user Вам надо изменить для своего сайта. Например, поменять Section Name на своё название (к примеру - Members area). /full/path/to/.htpasswd - полный путь до файла.htapasswd (об этом чуть позже). Если вы не знаете полного пути, то обратитесь к системному администратору. Файл.htpasswd Чтобы защитить директорию паролем, надо создать файл содержащий логины и пароли, которым разрешено будет посещать сайт. И вписать в файл.htpasswd. Создание имен пользователей и паролей. Вписываем имена пользователей и пароли след. образом: username:password пароль (password) зашифрованная версия пароля.
Чтобы зашифровать.htpasswd файл, вам нужно будет воспользоваться готовым скриптом, или самому написать его. Если вам нужно несколько пользователей, то пишите построчно их. Как только вы заходите в защищенную паролем директорию, у вас всплывет pop-up окно для ввода логина и пароль. А можно просто вписать в поле адреса: username:[email protected]/directory

Ускоряем сайт с помощью 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 no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html

Как заставить Апач обрабатывать SSI директивы? SSI позволяют "собирать" страницу из кусочков. В одном кусочке у вас код меню, в другом код верхней части страницы, в третьем - нижней. А посетитель видеть обычную страницу, которая состоит из того кода, который входит в ваши кусочки. Необходимы обязательные установки в httpd.conf:
В блоке, начинающемся с и заканчивающийся в строку Options Indexes добавьте Includes.
и после, в файле.htaccess пишем: AddHandler server-parsed .shtml .shtm .html .htm Чтобы пользователь не видел список файлов в папке, при отсутствии в ней индексного файла, добавим строчку: Options -Indexes Выполнение php кода в файлах с другим расширением. Иногда бывает полезно "обмануть" посетителя, выдавая ему свои php-скрипты или иные файлы, как html файлы. Реально используется для индексации поисковой системой Rambler php-скриптов. RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml
Заметьте, так как файлам с расширением.html и.htm сопоставлено, что это файлы с гипертекстовой разметкой, то мы первой строкой убираем это сопоставление и добавляем обработку таких файлов php интерпретатором. При большой посещаемости сервера такие ухищрения могут вызвать тормоза. Спрашивайте у админа. Error 404 ... Если не будет файла, сообщающего об ошибке, то посетитель увидит содержимое вашего сайта, как в проводнике. Наверное, вы встречали картину подобную представленной ниже:
Можно создать специальный файл, где будут ссылки на ваш сайт, а не на хостера. Назвать его 404.html и поместить в корневую директорию.
Величина страницы с ошибкой должна быть больше 511 байтов, иначе Internet Explorer может показать собственную страницу с описанием ошибки. ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
ErrorDocument 401 /401.html
ErrorDocument 500 /500.html
Можно указать другой файл, который автоматически откроется при появлении ошибки.
Карта сайта - является идеальным файлом для обработки ошибки error 404 (файл не найден). ErrorDocument 404 /map.html register_globals Если у вас не работает почтовая форма, возможно не включен register_globals, тогда добавьте строчку: php_flag register_globals on Или php_flag register_globals off если вы хотите отключить.

ПРИНУДИТЕЛЬНАЯ ЗАКАЧКА ОПРЕДЕЛЕННЫХ ФАЙЛОВ

Можно некоторые файлы (MP3, EPS, XLS ...), предназначенные для скачивания принудительно скачивать, а не позволить браузеру решить, что делать. То есть, принять решение за него.
Этот фрагмент кода заставит загрузку и.xls файлы.eps с вашего сервера.




ForceType application/octet-stream
Header set Content-Disposition attachment

ЗАЩИТА ОТ ХОТЛИНКОВ

Хотлинк (hotlink) - это когда ставят прямую ссылку на ваше содержание с другого сайта.
Часто такая ситуация нежелательна, вы же не хотите оплачивать трафик другого сайта, и для ее избежания используется: SetEnvIfNoCase Referer "^http://www.test.com" local_ref=1
SetEnvIfNoCase Referer "^http://test.com" local_ref=1

Order Allow,Deny
Allow from env=local_ref
Другой вариант: RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$
RewriteRule .*\.(gif|jpg)$ - [F]

RewriteCond %{HTTP_REFERER} !.*/foo-with-gif\.html$
RewriteRule ^inlined-in-foo\.(gif|jpg)$ - [F]
Еще вариант: RewriteEngine On
#Replace ?mysite\.com/ with your blog url
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/
RewriteCond %{HTTP_REFERER} !^$
#Replace /images/nohotlink.jpg with your "don"t hotlink" image url
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

О предназначении файла.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, используйте следующий фрагмент кода:

order allow,deny deny from all
Если вы хотите указать определенные IP-адреса которым надо запретить доступ, перечислите их при помощи allow from.

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

Order Allow,Deny Deny from all

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. Для этого используйте следующий код:

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.*

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

RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com RewriteRule \.(jpg|jpeg|png|gif)$ -
Не забудьте заменить yourdomain.com на имя вашего домена.

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

RewriteEngine on RewriteCond %{HTTP_REFERER} bannedurl1.com RewriteCond %{HTTP_REFERER} bannedurl2.com RewriteRule .* - [F]
Вам необходимо заменить bannedurl1.com и bannedurl2.com доменами, которые вы хотите внести в черный список. Вы можете использовать флаг , указывающий, что введенное доменное имя нечувствительно к регистру. Флаг [F] указывает на тип действия, в данном случае - отображение ошибки 403 Forbidden. Если вы хотите запретить несколько сайтов, используйте флаги для каждого домена, если же вы хотите запретить использование одного домена - используйте только флаг .

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:

Header set Cache-Control "max-age=2592000"
Вы можете добавить больше типов файлов (или удалить некоторые из них) в перечисленныq в данном примере список файлов. Вы также можете указать время сохранения файлов в кэше (в секундах) при помощи переменной max-age.

8. Отключение кэширования для разных типов файлов
Если вы не хотите кэшировать определенные типы файлов, можно не включать их в список. Однако иногда файлы могут сохраняться в кэше даже не будучи явно перечисленными в списке, в этом случае вы можете отключить кэширование для них индивидуально. Чаще всего отключать кэширование требуется для динамических файлов, таких как сценарии. Пример требуемого для этого кода:
Header unset Cache-Control
Просто укажите типы файлов, для которых нужно отключить кэширование.
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, чтобы при возникновении проблем можно было быстро восстановить работу сайта.

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

Сам файл по сути не имеет названия и поэтому начинается с точки.htaccess. Создать такой файл вы можете используя любую среду разработки(Notepad++, phpStorm и т. п.) он является простым текстовым файлом. Ну хватит теории приступим непосредственно к делу, создадим файл.htaccess и внесем в него первую настройку.

#Кодировка AddDefaultCharset UTF-8

Что мы тут видим, ну во первых с помощью решетки(#) добавляются одностраничные комментарии(инструкции, пояснения) которые не как не влияют на общие настройки.

AddDefaultCharset - c помощью этой команды мы выставляем кодировку в нашем случае это utf-8.

Теперь давайте рассмотрим работу с доступами:

#Запрет доступа Deny from all

Данная опция запрещает доступ к текущей директории, всем ее файлам и папкам.

Давайте теперь рассмотрим пример посложнее:

#Запрещаем обращение к файлам типов zip,7z,rar,txt,sql

здесь с помощью filesMatch мы указываем что то типа регулярного выражения в котором говорится что все файлы которые заканчиваются на.zip, .7z и т.д. или по другому имеют такие расширения. Будут ограничены в доступе. То есть доступ к ним будет запрещен.С помощью строчки Order Allow, Deny - мы указываем что доступ закрыт только для текущих(перечисленных файлов).

Мы также можем перекрыть доступ к определенным файлам:

Order Allow,Deny Deny from all

к примеру confg.php и test.php.

Также можно закрывать доступы определенным ip:

Deny from 127.0.0.1 123.32.32.32 #Запрещаем вывод содержимого папок Options -Indexes

С помощью данной настройки мы запрещаем вывод списка файлов и папок в директории.

#При возникновении ошибок 404,403,500 перебрасываем пользователя на определенные страницы ErrorDocument 404 /page404.php ErrorDocument 403 /page403.php ErrorDocument 500 /page500.php

Данные инструкции при возникновении ошибок с определенным кодом ошибки перенаправляют пользователя на указанные страницы. То есть если возникнет ошибка 404(страница не найдена) , то с помощью данной инструкции ErrorDocument 404 /page404.php нас перенаправит на страницу page404.php. Тут следует отметить что вы должны создать данную страницу!

ErrorDocument 404 путь к странице

Теперь поговорим о механизме mod_rewrite

#Включаем mod_rewrite RewriteEngine On -

Данный механизм позволяет делать перенаправления или редиректы.

Например если мы хотим что при переходе на старую страницу которая начинается с old_url и заканчивается.html нас перебрасывало на адрес new_url.html? , то нам нужно прописать следующий код.

RewriteRule ^old_url\.html$ /new_url.html

где ^old_url\.html$ - старый адрес с которого будет осуществляться перенаправление, /new_url.html -новый адрес куда осуществляется перенаправление - перенаправление 301

В общем использование данного механизма довольно обширно. И требует посвещения отдельной статьи.

На этом дорогие друзья на сегодня все надеюсь данная статья была для вас полезна и занимательна. Я желаю вам успеха и удачи! Пока!