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

Если вас интересует, как заблокировать доступ по IP к сайту нежелательным личностям, спамерам и прочим, то вам надо создать или отредактировать файл .htaccess и воспользоваться синтаксисом Order Allow,Deny либо Order Deny,Allow . Между ними есть разница:

  • Order Allow,Deny
    Сначала обработаются разрешающие правила Allow , потом запрещающие Deny , а всё, что не попадает под них, будет запрещено;
  • Order Deny,Allow
    Сначала будут обработаны запрещающие правила Deny , потом разрешающие Allow , а все, что не попадут под них, будут разрешены по умолчанию.

Обратите внимание на синтаксис, никаких лишних пробелов, иначе можно вызвать ошибку 500 Internal Server Error

Если это касается всего сайта, файл создаётся в корне, если нужно закрыть лишь определённую его часть, например, админку, файл.htaccess должен располагаться непосредственно в этом разделе.
Ну, и конечно же, ваш сервер (бекенд или рабочий) должен быть . Если ваш рабочий сервер + php-fpm, то править придётся конфигурационный файл nginx.

Забанить спамера по IP диапазону

Order Deny,Allow Deny from 192.168.1.1

Это был пример того, как забанить IP (192.168.1.1) спамера, не закрывая доступа всем остальным. Ещё можно пропустить последний октет IP-адреса, Deny from 192.168.1 , тогда будут забанены все пропущенные IP адреса. Однако, вы же понимаете, статичный IP блокировать глупо, он, скорее всего, динамический, поэтому мы берём IP и отправляемся определять подсеть с диапазоном IP, откуда он пришёл. Для этого воспользуемся любым Whois-сервисом, например, этим , ищем строку CIDR или, если её нет, NetRange

Запретить доступ в админку

Чтобы запретить доступ в админку всем, кроме вашего IP, в htaccess, который должен располагаться в разделе админки, нужно прописать:

Order Allow,Deny Allow from 192.168.0.0/16

Где 192.168.0.0/16 — ваш IP или подсеть

Вот, скажем, вариант для WordPress. Файл.htaccess создаётся в /wp-admin/

Allow from all Order Allow,Deny Allow from 192.168.0.0/16

Обратите внимание, тут используется конструкция Files "admin-ajax.php" . Она необходима для того, чтобы проходили ajax запросы.

Запретить доступ к файлам по IP

Вот пример, как можно защитить админку WordPress от посягательств хакеров. Здесь используется конструкция FilesMatch "регулярное выражение"

.htaccess - это документ, который управляет доступом к различным файлам и папкам на сайте, а также сайтом в целом. При переходе на страницу, к которой закрыт доступ по.htaccess , пользователь увидит служебную страницу с кодом ошибки 404.

Как редактировать.htaccess

Как заблокировать доступ к сайту для всех

Чтобы полностью закрыть доступ к сайту, допишите в.htaccess :

deny from all # Запрещает доступ к сайту всем IP адресам

Как разрешить доступ к сайту только определенному IP

Чтобы полностью закрыть сайт для всех IP кроме одного, допишите в.htaccess :

deny from all # Запрещает доступ к сайту всем IP адресам allow from XXX.XXX.XXX.XXX # Открывает доступ для указанного IP. Если IP много, разделяйте их пробелом.

Как запретить доступ к сайту только определенному IP

Чтобы полностью закрыть доступ к сайту для одного IP, допишите в.htaccess :

deny from XXX.XXX.XXX.XXX # Закрывает доступ для указанного IP. Если IP много, разделяйте их пробелом.

Как управлять доступом к определенному файлу

Если вы хотите, чтобы для разных файлов на сайте были разные настройки доступа, вы можете воспользоваться командой . Например, чтобы закрыть доступ к файлу wp-config.php для всех, кроме вас, допишите в.htaccess :

order deny,allow # Определяет порядок исполнения других команд. Сейчас allow выполняется после deny. deny from all # Запрещает доступ к файлу всем IP адресам allow from XXX.XXX.XXX.XXX # Открывает доступ для указанного IP. Если IP много, разделяйте их пробелом.

Таким же образом можно закрыть доступ и к самому.

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

Чтобы запретить доступ ко всему сайту, необходимо в файле.htacces написать следующее:



Запретить доступ только с конкретного 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 можно добавив в него две строчки:



ваш_сайт.ru .*$


В скобочках через символ "|" указаны расширения файлов, доступ к которым будет запрещен всем, за исключением сервера и пользователей сайта ваш_сайт.ru

Чтобы открыть доступ к файлам с этим расширением для пользователей поисковых систем необходимо исключить на них запрет так же, как на ваш_сайт.ru:


RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?ваш_сайт.ru
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yandex.ru
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yahoo.
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google.
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?bing.
RewriteRule \.(jpe?g|bmp|gif|png|css|zip|pdf|txt|doc)$ -

Защита паролем

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


AuthName "What do you want? "
AuthType Basic
AuthUserFile
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 будут доступны только по паролю.



Внимание!
Надеюсь, вы догадаетесь сделать копию существующего файла .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 являются служебными, то они не доступны веб-пользователю из браузера. Хотя конечно же, абсолютно всё, в том числе и это ограничение, можно переназначить в httpd.conf - главном конфигурационном файле сервера доступному только администратору хостинга.

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

Главная проблема при использовании директив.htaccess – это прежде всего ограничения хостеров, особенно на бесплатных серверах, и на начальных тарифах при платном хостинге, хотя как правило, многие не ресурсоемкие и безопасные директивы здесь уже разрешаются.

Поэтому сохраните оригинальный файл.htaccess на всякий пожарный:))

Обычно файл.htaccess лежит в корневом каталоге и действует на весь сайт и на все дирректрии (если в них не находится «своего» .htaccess). Если необходимо создать конкретные настройки Apache для определенной папки, следует поместить в нее новый файл.htaccess и действие его распространится на данную папку. Причем.htaccess лежащий в корне сайта никак влиять на эту папку в этом случае не будет.

Как сделать.htaccess
Просто. На локальном компе создаем текстовый документ.htaccess.txt, по FTP заливаем его на хост, и переименовываем в.htaccess

Основные возможности htaccess.

В начале рассмотрим директиву Order файла.htaccess Apache сервера
Описание: Устатавливает порядок работы директив Deny и Allow
Order - в переводе порядок. Порядок может принимать значения или .
Синтаксис - состояние по умолчанию:

Order Deny,Allow

Директива Deny - в переводе запрет
Описание: Запрещает доступ определенных клиентов к ресурсам.
Синтаксис:

Deny from all|host

host

Директива Allow - в переводе разрешить
Описание: Разрешает доступ определенных клиентов к ресурсам.
Синтаксис:

Allow from all|host

host может принимать значения IP адреса или имени хоста.

.htaccess запрет на доступ для всех

Order Deny,Allow
Deny from all

.htaccess - разрешение на доступ для определенного IP адреса и хоста.

Order Deny,Allow
# запрет для всех на доступ к ресурсу

Deny from all
# разрешаем только следующим
Allow from local.

.htaccess - запрет на доступ для пределенного IP адреса и хоста.

Order Allow,Deny
#разрешаем заходить на сервер всем

Allow from all
Deny from local.

Если нужно запретить всей сети 100.99.99.1 - 100.99.99.255 то ставим комбинацию первых лем: 100.99.99

Запрет на доступ для определенного файла.

Директива Files файла.htaccess сервера Apache
В примере запрещается доступ к файлу с паролями.htpasswd для всех посетителей кроме 100.99.99.1 и 2

Order Deny,Allow
Deny from all
Allow from 100.99.99.1, 100.99.99.2

Запрет передачи данных браузера методом GET .

В данном примере мы запретим пользователям с айпи-адресами (IP) 100.99.99.1, 100.99.99.2 заходить на ресурс используя метод GET для передачи данных браузером - .htaccess ip:

Order Allow,Deny
Deny from 100.99.99.1, 100.99.99.2
Allow from All

Мы запретили пользователю с IP адресом 100.99.99.1 смотреть сайт. Если вместо 100.99.99.1 написать 100.99.99, то доступ будет запрещен для всей сети класса C.

Запрет на доступ к определенной группе файлов.

Еще один пример.htaccess: запрет на доступ для определенной группы файлов. В примере запрещается доступ к файлам с расширениями "lib" и "pm" для всех посетителей кроме 100.99.99.1

# или например:

Order Deny,Allow
Deny from all
Deny from 100.99.99.1

Как с помощью.htpasswd и.htaccess запретить доступ к папке сайта.

С помощью этих двух файлов можно запросто сделать так чтобы при попытке открыть сайт пользователям предлагалось ввести логин и пароль.
Только после того как пользователь правильно введет пару логин и пароль, соответствующую занесенной в файл.htpasswd, он будет допущен к просмотру скрытой области сайта.
Для того чтобы это осуществить достаточно создать файл.htaccess и поместить его в ту папку сайта к которой вы хотите запретить доступ.

AuthType Basic
AuthName "Please input login and password!"
AuthUserFile / usr/ host/ mysite/. htpasswd
require valid- user

  • AuthType - может иметь значение Basic или Digest, в нашем случае нам подойдет Basic.
  • AuthName - текст выводимый вместе с формой авторизации.
  • AuthUserFile - путь к файлу с паролями (.htpasswd).
  • AuthGroupFile - путь к файлу групп, если он существует.
  • Require - определяет параметры аутентификации. (User,Group,Valid-user) Valid-user – все прошедшие проверку. User – пользователи имеющие права доступа. Group – группы пользователей имеющие права доступа.

Создайте файл.htpasswd и в него поместите следующую строку:

admin: $apr1 $ejtOHg / 4 $cMColJLMZ39weAalo3V8k0

Строка эта содержит пару логин и пароль где:

Логин: admin
Пароль: 1

Чтобы генерировать любые пароли для файла.htpasswd можно воспользоваться утилитой для генерации паролей htpasswd.exe Скачать утилиту для генерации паролей htpasswd.exe

Пользоваться утилитой для генерации паролей очень легко, нужно создать файл.htpasswd и в программе выбрать его с помощью кнопки “Old file “. Далее все интуитивно понятно, вводим новых пользователей и пароли к ним, затем жмем на “Update “. Кстати данная утилита генерации паролей для htpasswd, может не только создавать новые, но и редактировать старые пароли. Что очень удобно, в случае если вы забыли старый пароль. Еще стоит сказать что эта утилита является стандартной и поставляется вместе с сервером Apache.

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

Внимание важное замечание! Очень полезным будет расположить файл с паролями вне папки с содержимым сайта. Это позволит защитить его от злоумышленников.

Перенаправление посетителей при обновлении сайта.

order deny,allow deny from all allow from 123.123.123.123 ErrorDocument 403 /page.html allow from all

Замените 123.123.123.123 на Ваш ip-адрес, а также замените page.html на ту страницу, которую будут видеть пользователи, зашедшие на сайт

Определенная страница с ошибкой 404

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

Перенаправлять посетителей в таком случае удобно на главную страницу сайта.

Редирект на перемещенные или переименованные страницы.

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

Redirect 301 /old.html http://yoursite.com/new.html

Также вы можете использовать такой редирект для того, чтобы страница не потерялась для поисковиков.

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

Если у Вас в папке на сайте нет файла index , то любой пользователь может посмотреть, какие файлы в ней лежат.

Чтобы избежать таких вещей, следует прописать такой код:

На некоторых хостингах такая функция прописана по-умолчанию, в таком случае Вам не стоит беспокоиться.

Создание красивых URL

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

Вот некоторые примеры с кодом:

RewriteEngine on RewriteRule ^about/$ /pages/about.html [L] RewriteRule ^features/$ /features.php [L] RewriteRule ^buy/$ /buy.html [L] RewriteRule ^contact/$ /pages/contact.htm [L]

Переопределение сообщений об ошибках

Одной из полезных возможностей, предоставляемых Apache, является подмена стандартных сообщений об ошибках веб-сервера своими. Для этого служит директива ErrorDocument.

ErrorDocument 403 "

Forbidden


ErrorDocument 404 /errors/404.html

Внимание: при указании непосредственно HTML кода в данной директиве кавычки ставятся только в начале строки (см. пример)!
Пути к файлам указываются относительно корневого каталога данного веб-хоста, а не относительно файловой системы (правильно: /errors/404.html; неправильно: /var/www/myhost/html/errors/404.html).

Включение поддержки SSI

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

AddType text/html .shtml .htm .html
AddHandler server-parsed .shtml
Options +Includes

Блокировка по реферреру

Посредством использования модуля mod_rewrite и файла.htaccess можно добиться запрета доступа к Вашим ресурсам, если клиент пришел с какого-то определенного сайта (блокировка по referer"у).

Для этого требуются следующие директивы.htaccess:

RewriteEngine on

RewriteCond %{HTTP_REFERER} badsite.com
RewriteRule .* – [F]

Или, если нужно перечислить больше одного сайта,

RewriteEngine on
# Options +FollowSymlinks # – раскомментировать, если при установке этого.htaccess появляется ошибка 500, Internal Server Error
RewriteCond %{HTTP_REFERER} badsite.com
RewriteCond %{HTTP_REFERER} anotherbadsite.com
RewriteRule .* – [F]

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

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.ru(/)?
RewriteCond %{HTTP_REFERER} !^http://(.*).mydomain.ru(/)?
RewriteRule .*.(gif|jpg|jpeg|png)$ – [F]
Изменение индекс-страницы

Задать/Изменить индексный файл и последовательность их обработки можно директивой DirectoryIndex
Например:

DirectoryIndex photo.php photo.php5 index.php

Перенаправления

Для организации редиректа средствами.htaccess достаточно строки вида:
Redirect /old_directory/old_file.html http://your_new_site.com/new_directory/new_file.html

Если нужно редиректить все содержимое подкаталога:
Redirect /old_directory http://your_new_site.com/new_directory/

Редирект для всего сайта:
RewriteEngine On
RewriteRule (.*) http://your_new_site.ru

Запрет обращений к.htaccess

Защитить их можно следующим образом, однако, это по умолчанию уже есть в httpd(2).conf, то есть в самой конфигурациии веб-сервера.


Order allow,deny
Deny from all

Добавление MIME-типов

Для добавления MIME-типов используется директива
AddType mime/type extension
Например,
AddType application/x-bittorrent torrent

Используется она в тех случаях, когда конфигурация по умолчанию заставляет сервер передавать документы не так, как требуется; например, многие серверы по умолчанию подразумевают тип text/plain, и бинарный файл (например, rar-архив), скачанный с такого сервера, вполне может оказаться «битым».

Запрет прямых ссылок на ресурсы

Если Вы хотите избежать так называемого «хотлинкинга» – прямых ссылок на Ваши ресурсы с других сайтов – Вам опять-таки поможет.htaccess в комбинации с mod_rewrite.
Для начала рассмотрим, чем плох хотлинкинг. Например, некий сайт размещает у себя изображение, находящееся на Вашем сайте, просто указав его в тэге . При этом все обращения к такой странице вызовут скачивание данного изображения с Вашего сайта; таким образом, будет расходоваться Ваш траффик и пропускная способность канала сервера, а посетители чужого веб-сайта увидят изображение, хранящееся у Вас, без соответствующего контекста.

Как же бороться с подобной практикой?
Рассмотрим следующий пример части файла.htaccess:
RewriteEngine on


RewriteRule \.(js|css)$ - [F]

Данный код запрещает обращения к.js и.css файлам (скрипты javascript и описания Cascading Style Sheets), если они производятся не с Вашего сайта.

Другой пример:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$
RewriteRule \.(png|gif|jpg|jpeg)$ http://www.mydomain.com/youaretheworst.gif

При обращении извне к изображениям, хранящимся на вашем сайте, вместо самих изображений будет отображаться содержимое файла youaretheworst.gif.

Запрет вывода списка файлов

Apache (при включении соответствующих опций) умеет отображать список файлов в каталоге, если в нем нет ни одного из перечисленных в DirectoryIndex файлов. Часто эта опция включена по умолчанию, что может быть неприемлемо.
Строчка
Options -Indexes
отключит этот режим.

Однако иногда может, наоборот, понадобиться разрешить просматривать список файлов, при этом исключив из него их часть. Для этого служит IndexIgnore.
Например,
IndexIgnore *.php* *.pl *.html *.shtml
разрешает вывод списка всех файлов, кроме PHP и Perl скриптов, а также HTML документов.

и еще...

Меняем страницу, которая будет показываться при обращении к директории.

Пропишем в файле.htaccess:

Код
DirectoryIndex index.shtml

** При обращение к директории, в которой лежит.htaccess, будет грузиться файл index.shtml

Запрет доступа с помощью.htaccess

При желании можем дать запрет на все файлы:

Код
deny from all

*** никто ничего не увидит.

Разрешить доступ посетителю только с определенного ip:

Код
Order Allow,Deny
deny from all
allow from 192.168.8.1

*** Всем кроме посетителя с IP 192.168.8.1 доступ запрещен.

Кстати, вместо ip адреса в.htaccess можно использовать имя домена. Например. Запретим доступ для всех посетителей, кроме пришедших с www.talkonline.ru:

Код
Order Deny,Allow
Deny from all
Allow from .talkonline.ru

Запрет доступа для определенного ip:

Код
Order Allow,Deny
Allow from all
deny from 192.168.8.1

*** Для посетителя с IP 192.168.8.1 доступ на сайт запрещен.
**** Только не спрашивайте у меня где всять список китайских ip

Аналогично, как и в примере выше, можно вместо (а можно и совместно) IP использовать имя домена, т.е. запретить доступ для посетителей, пришедших с определенного сайта:

Код
Order Allow,Deny
Allow from all
deny from .thehun.net
deny from 192.168.8.1

*** Для посетителя с IP 192.168.8.1 и всех, кто пришел с thehun.net доступ на сайт запрещен.

Определенная кодировка на все загружаемые на хост файлы:

Код
CharsetSourceEnc windows-iso-8859-1

*** все файлы будут иметь кодировку windows-iso-8859-1

Можно выставить определенную кодировку лишь на конкретные загружаемые на хост файлы:

Код
AddType "application/x-httpd-php3; charset=windows-iso-8859-1" .html
AddType "application/x-httpd-php3; charset=windows-1251" .htm

*** Устанавливаем кодировку windows-iso-8859-1 на файлы.html и windows-1251 на файлы.htm

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

Код
AddDefaultCharset windows-iso-8859-1

*** Все страницы, которые отдает сервер клиенту, будут иметь кодировку windows-iso-8859-1

Перенаправляем посетителей на другой URL (редирект)
В.htaccess пишем:

Код
Redirect / http://talkonline.ru

*** все посетители будут перенаправлены на www.talkonline.ru

Перенаправление посетителей при запросе определенных страниц:
Защищаемся от всяческих сетевых вирусов и сканеров.
Добавляем в.htaccess:

Код
redirect /scripts http://www.microsoft.com
redirect /_vti_bin http://www.microsoft.com
redirect /MSADC http://www.microsoft.com
redirect /_mem_bin http://www.microsoft.com
redirect /msadc http://www.microsoft.com
RedirectMatch (.*)\cmd.exe$ http://www.microsoft.com$1

*** Любой запрос с адресом /_vti_bin или /scripts будет автоматически перенаправляться на сайт Microsoft

Редирект посетителей в зависимости от реффера (ссылающейся страницы):

Код
RewriteCond %{HTTP_REFERER} http://www.yandex.ru
RewriteRule ^/yandex.html$ /google.html [L]

*** В данном случае все с yandex.ru вместо файла yandex.html получат файлик google.html

Как сделать 301 редирект для joomla:

1. На сервере находим файл.htaccess, обычно он лежит в корневом каталоге.

2. Делаем резервную копию.htaccess !!!

3. Находим следующие строки:

########## Begin - Joomla! core SEF Section
#
Информация
#
######### End - Joomla! core SEF Section

4. Между ними будет информация, а в последней строке в квадратных скобках будет атрибут "L", удаляем его.

5. Если Вы хотите чтобы название вашего сайта в адресной строке писалось с www, после "информации"добавляем следующее

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^site.com
RewriteRule ^(.*) http://www.site.com/$1

Если Вы хотите чтобы название вашего сайта в адресной строке писалось без www, после "информации"добавляем это

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.site.com
RewriteRule ^(.*) http://site.com/$1

6. Проверяем, также проверьте открываются ли внутренние страницы, если всё гуд то см. пункт 7, если нет, то загружаем резервную копию файла.htaccess и возвращаемся к пункту 2.

7. Пишем комментарий, а если поставите на своём сайте ссылочку на эту статью, моё сердце наполнится радостью и милость Богов Яндекса и Гугла снизойдёт на Ваш ресурс

По материалам сайта http://www.htaccess.net.ru, http://www.maxua.com.ua/, www.rabotafree.com



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: