- Управление доступом с помощью htaccess. Как изменить доступ к сайту
- Как изменить доступ к файлам, с помощью .htaccess?
- Как закрыть доступ для всех?!
- Как закрыть доступ всем, кроме определенного ip?!
- Как закрыть доступ к определенной директории сайта?!
- Как закрыть доступ к файлу на сайте?!
- Файл .htaccess — настройка перенаправлений и управление конфигурацией веб-сервера
- Примеры использования файла .htaccess
- 3. Диагностика ошибок
- Deny from all htaccess не работает
Управление доступом с помощью htaccess. Как изменить доступ к сайту
Здравствуйте программисты, сегодня новое руководство по работе с htaccess. Сегодня я научу вас как запрещать доступ к файлам, как запрещать доступ к директориям, как запрещать доступ к сайту по определенному ip. В общем я вас расскажу как закрывать свой сайт от посетителей.
Данный метод используется для ограничения определенных файлов или директорий сайта.
Как изменить доступ к файлам, с помощью .htaccess?
Для того чтобы это сделать, мы в корневой папке сайта создаем файл .htaccess. Данный файл необходимо открыть как обычный текстовик или с помощью программы для написания кода. Я открываю этот файл через программу Sublime Text.
Для файла .htaccess следует использовать права доступа 644 и загружать его в ASCII-режиме. Если ваш .htaccess файл не работает, то вам следует обратиться к системному администратору или в техподдержку вашего веб-хостинга и убедиться, что использование его разрешено для вашей учетной записи, так как некоторые хостинговые компании не позволяют его использование без предварительного разрешения, это в основном относится к бесплатным хостингам. Также, к сожалению, .htaccess не будет работать на Windows-серверах.
Первая директива, с которой мы познакомимся, это директива Order. Синтаксис директивы прост и она может быть использована в двух вариантах:
Order Deny,Allow – это начала кода, которое показывает, что после него будут перечислены параметры ограничения доступа к файлам.
Allow – разрешает доступ.
В зависимости от выбранного варианта [Deny,Allow] или [Allow,Deny] для директивы Order, мы изменяем логику работы сервера. Если используем первый вариант (Deny,Allow), то мы сообщаем серверу, что хотим запретить доступ для всех (deny), кроме тех, которым разрешим (Allow).
Когда мы используете второй вариант (Allow,Deny), то подразумевается, что мы разрешаем доступ всем, кроме определенных IP.
Здесь стоит отметить, что на самом деле использование директивы Order не является обязательным и возможно использование директив Deny и Allow без директивы Order. Также не будет ошибкой, если, к примеру, объявив в директиве Order вариант Deny,Allow, мы сначала используем директиву Allow, а затем Deny. Хотя все же лучше будет, если мы в этом вопросе не будем отходить от рекомендаций документации.
Как закрыть доступ для всех?!
Итак, для того, чтобы закрыть доступ к сайту для всех, достаточно прописать в файле htaccess в корне следующие строки:
Так мы закрыли доступ ко всему сайту для всех IP. Теперь сервер будет отдавать клиенту ответ 403, т.е. доступ запрещен.
Как закрыть доступ всем, кроме определенного ip?!
Если вы захотите открыть при этом доступ к сайту с конкретного IP, тогда его можно указать в директиве Allow. Например, откроем доступ для IP 127.0.0.1:
Также можно открывать доступ для нескольких IP. Для этого достаточно перечислить их через пробел:
Как закрыть доступ к определенной директории сайта?!
Очевидно, что точно так же мы можем закрыть доступ не ко всему сайту, а только к какой-нибудь папке. Для этого просто нужно создать в папке файл htaccess и в нем прописать всего одну строку:
Как закрыть доступ к файлу на сайте?!
А что, если мы хотим запретить доступ не к папке, а к файлу. Для этого мы воспользуемся еще двумя директивами: Files и FilesMatch. Данные директивы похожи на HTML-теги, поскольку требуют закрывающей директивы и заключены в знаки меньше/больше:
На самом деле они представляют собой некую ограничивающую конструкцию, позволяющую обратиться только к конкретному файлу или файлам. Например, давайте закроем доступ к архиву rar.rar:
Теперь файл пропадет из листинга каталога и при попытке обращения к файлу напрямую сервер вернет нам вместо файла 403 ошибку.
Если мы хотим ограничить доступ к группе файлов, то здесь можно использовать директиву FilesMatch вкупе с регулярными выражениями. Например, так можно ограничить доступ к графическим файлам и архивам:
Источник
Файл .htaccess — настройка перенаправлений и управление конфигурацией веб-сервера
.htaccess — это конфигурационный файл веб-сервера Apache , позволяющий управлять работой веб-сервера и настройками сайта с помощью различных параметров (директив) без изменения основного конфигурационного файла веб-сервера.
На хостинге RU-CENTER в настоящее время используется веб-сервер Apache версии 2.4.
Директивы файла .htaccess действуют для каталога, в котором размещён такой файл, и для всех его подкаталогов. Если вы желаете с помощью .htaccess изменить настройки для сайта в целом, его следует размещать в корневом каталоге сайта
Пожалуйста, будьте внимательны при редактировании файла .htaccess! При сохранении такого файла в кодировке UTF-8 в нём не должно присутствовать BOM-сигнатуры. Для редактирования файла .htaccess и других конфигурационных файлов мы рекомендуем использовать не «Блокнот» Windows, а специальные текстовые редакторы, например Notepad++.
Примеры использования файла .htaccess
1. Перенаправление доменов c синонима сайта на основной домен с кодом 301
Перенаправить запросы на domain.ru с любого из синонимов сайта
RewriteEngine On
RewriteCond %
RewriteRule ^(.*)$ http://domain.ru/$1 [L,R=301]
Перенаправить запросы на www.domain.ru с любого из синонимов сайта
RewriteEngine On
RewriteCond %
RewriteRule ^(.*)$ http://www.domain.ru/$1 [L,R=301]
Эти правила рекомендуется размещать в самом начале файла .htaccess.
2. Постоянное перенаправление с кодом 301
Если вы изменили адрес страницы сайта, добавьте в .htaccess следующие строки, чтобы запросы со старого адреса переадресовывались на новый
Redirect 301 /page.html http://www.domain.ru/new_page.html
- page.html — адрес старой страницы относительно корня сайта;
- www.domain.ru — имя сайта;
- new_page.html — адрес страницы, на которую нужно выполнить перенаправление.
Например, для перенаправления всех запросов к странице /period/?test=123 вашего сайта на domain.ru, вы можете написать:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %
RewriteRule ^period/$ http://domain.ru/ [L,R=301]
3. Переопределение страниц ошибок
При помощи файла .htaccess вы можете установить свои страницы ошибок:
#401 Авторизация не выполнена
ErrorDocument 401 http://domain.ru/errors/401.html
#403 Доступ запрещен
ErrorDocument 403 http://domain.ru/errors/403.html
#404 Страница не найдена
ErrorDocument 404 http://domain.ru/errors/404.html
#500 Внутренняя ошибка сервера
ErrorDocument 500 http://domain.ru/errors/500.html
Соответствующие файлы страниц ошибок (401.html, 404.html и др.) необходимо разместить в каталоге
Для того чтобы при случайном упоминании прямых ссылок на такие страницы они не проиндексировались в поисковых системах, рекомендуется:
User-agent: *
Disallow: /errors
/ваш_домен/docs/errors/.htaccess, в котором прописать
4. Постраничное перенаправление запросов на другой домен c кодом 301
Следующий код перенаправит все запросы к страницам вашего сайта на аналогичные страницы другого сайта, например, запрос http://domain.ru/main будет переадресован на http://www.newdomain.ru/main:
Redirect 301 / http://www.newdomain.ru/
RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.ru/$1 [R=301,L]
5. Ограничение доступа к сайту по IP
Запретить доступ к сайту с IP-адресов 123.4.5.6 и 123.5.4.3
Order Allow,Deny
Allow from all
Deny from 123.4.5.6 123.5.4.3
Запретить доступ к сайту со всех адресов кроме 123.4.5.6 и 123.5.4.3:
Order Deny,Allow
Deny from all
Allow from 123.4.5.6 123.5.4.3
Запретить доступ к сайту для всех:
6. Переопределение главной страницы сайта (индексного файла каталога)
Сделать главной страницей файл menu.html:
7. Включение обработки PHP в .html-файлах
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml
8. Запрет выдачи листинга каталога
В случае отсутствия в папке главной страницы (индексного файла), при обращении без указания конкретного имени файла в запросе будет выдан список всех файлов, находящихся в каталоге. Для того чтобы запретить отображение листинга каталога, добавьте в файл .htaccess строку:
9. Включить выполнение CGI-скриптов в папке docs для файлов с расширениями .cgi, .pl. .py
В папке c CGI-скриптами необходимо разместить файл .htaccess с содержимым:
AddHandler cgi-script .cgi .pl .py
Options +ExecCGI
Скрипт должен иметь атрибут исполнения (+x, права доступа, начинающиеся с 7, например, 755).
Атрибуты (права доступа) можно изменить с помощью файлового менеджера панели управления, при помощи вашего FTP-клиента или по SSH . Также в разделе Веб-сервер → Управление модулями должен быть включен модуль CGI.
10. Блокировка переходов со сторонних ресурсов
Для запрета перехода c baddomain.ru на domain.ru добавьте в .htaccess следующее:
RewriteEngine on
RewriteCond %
RewriteRule .* — [F]
Если требуется запретить переходы с нескольких доменов, то используйте следующие директивы
RewriteEngine on
RewriteCond %
RewriteCond %
RewriteCond %
RewriteRule .* — [F]
11. Особенности использования кириллических доменов (.РФ, .МОСКВА и др.)
В файле .htaccess использование кириллицы не допускается. При составлении правил перенаправления для кириллических доменов необходимо указывать имя домена в punycode. Узнать имя домена в punycode можно с помощью сервиса Whois.
Например, для перенаправления site.ru на caйт.рф нужно воспользоваться следующим правилом:
RewriteEngine on
RewriteCond %
RewriteRule ^(.*)$ http://xn--80aswg.xn--p1ai/$1 [R=301,L]
В этом случае ваши посетители могут увидеть именно punycode-представление доменного имени в адресной строке браузера. Это не является ошибкой.
12. Перенаправление с HTTP на HTTPS и обратно
Для работы перенаправления на сайте должен быть установлен действительный SSL-сертификат.
Перенаправить запросы на https://domain.ru
Перенаправить запросы на http://domain.ru
3. Диагностика ошибок
Если после редактирования или размещения .htaccess при обращении к сайту вы получили ошибку 500, то, скорее всего, в файле .htaccess допущена ошибка. Посмотреть её причины вы можете в лог-файле /var/log/ваш_домен.error_log.
Источник
Deny from all htaccess не работает
ОС — Fedora 7.
Имеется схема nginx 0.6.31 + apache 2.2.6 + mod_rpaf 0.6
apache работает как backend, слушает на 8080 порту.
nginx слушает на 80 и всё, кроме статики отдаёт apache.
rpaf настроен. В access_log пишутся «реальные» IP.
Заметил такую странную вещь, если есть .htaccess файл и я в корень сайта кладу например
order allow,deny
allow from [ip с которого соединяюсь]
deny from all
Апач даёт
Forbidden
You don’t have permission to access.
Хотя казалось бы указано allow from [ip с которого соединяюсь]
Если я лезу на апач «напрямую» через http://external_ip:8080/, то правило в .htaccess отрабатывает корректно — я вижу странчку.
Что примечательно, если .htaccess выглядит так
order allow,deny
allow from [ip с которого соединяюсь]
allow from 127.0.0.1
deny from all
и соединяюсь к nginx (а он в свою очередь к apache) через http://external_ip/ — получаю страничку! Нету никакого Forbidden.
Т.о., прихожу к выводу что mod_rpaf не работает в конструкциях .htaccess и передаёт ip frontend`а (в моём случае 127.0.0.1).
Поискал в инете, нашёл только один подобный случай для настроек виртуал хоста:
http://www.apsis.ch/pound/pound_list/archive/2007/2007-01/11.
Кто-нибудь проверьте пожалуйста на практике, может у меня где-то ошибка.
Есть ли какие-нибудь решения? Может стоит автору rpaf обратить внимание на такой «баг».
| Оглавление |
|
| Сообщения по теме | [Сортировка по времени | RSS] |
| 1. «apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от HaMiL | ||
| Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору | ||
| 2. «apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от sofree on 02-Окт-08, 17:25 | ||
копипастить не надо. Сам не одну статью прочёл про это. Повторюсь, что А не работает в .htaccess — allow, deny директивы для ip адресов. | ||
| Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору | ||
| 3. «apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от Alex (??) on 13-Окт-08, 15:37 | ||
На 2.0 такая же проблема. | ||
| Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору | ||
| 4. «apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от sofree on 13-Окт-08, 22:23 | ||
Нет, не решил. Зато выяснилось, что этот баг имеет место. Думаю, автору mod_rpaf надо показать данный «баг» | ||
| Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору | ||
| 5. «apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от qwerty (??) on 14-Окт-08, 16:47 | ||
| ||
| Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору | ||
| 6. «apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от sofree (ok) on 14-Окт-08, 20:12 | ||
А можно с .htaccess попробовать? Всего лишь маленький файлик. | ||
| Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору | ||
| 7. «apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от qwerty (??) on 28-Окт-08, 11:51 | ||
Order deny,allow | ||
| Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору | ||
| 8. «apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от sofree (ok) on 31-Дек-08, 00:31 | ||
Появилась возможность проверить баг. И так локальная сеть, Apache/2.2.10 (Fedora core 10 rus), ip=10.1.1.1 на котором крутится апач. Апач висит на 8080 (бэкэнд), а на 80 слушает nginx (фронтэнд) И так: Комп, с которого запрашиваю — 10.1.1.3. You don’t have permission to access /test/ on this server. Случай 2. Прихожу к выводу, что баг прогрессирует! | ||
| Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору | ||
| 9. «apache + mod_rpaf + .htaccess» | +1 + / – | |
| Сообщение от Ярослав (??) on 31-Июл-09, 20:32 | ||
>[оверквотинг удален] | ||
| Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору | ||
| 10. «apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от sofree | ||
| Вот бы хорошо, чтобы автор мода | ||
| Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору | ||
| 11. «apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от vinzz | ||
| этот патч решил одну проблему, но добавил другую: МОЙ-IP-АДРЕС — это ип с которого коннект, именно клиентского компьютера на котором открыт браузер. идеи? | ||
| Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору | ||
| 12. «apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от angelina on 10-Дек-09, 11:06 | ||
| ||
| Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору | ||
| 13. «apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от Avari on 21-Окт-10, 21:21 | ||
| Поможет только тем, у кого апач 1.3. О чём вполне ясно написано у Сысоева. Для апача2 только mod_rpaf. Лично я категорический сторонник apache2. | ||
| Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору | ||
| 14. «apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от Kirill (??) on 22-Окт-10, 11:13 | ||
а этот глюк исправили? | ||
| Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору | ||
| 15. «apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от baddan | ||
на debian работает на CentOS отказывается REMOTE_ADDR везде коректно правится. в логах тоже казывается правильный ip, но в centos не работает, в debian работает. в обоих практически одинаково настроены сайты. Видимо в 2.2.9 есть какието изменения которые исправляют проблему. | ||
| Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору | ||
| 16. «Не работает allow, deny, когда apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от SatanaClause (??) on 09-Авг-11, 13:36 | ||
| только что наткнулся на эту проблему. Смотрю ничего не изменилось c того времени. .htaccess с кодом не работает order deny,allow Решение простое, заменить mod_rpaf на mod_extract_forwarded 2. инсталируем mod_extract_forwarded 4. коректируем конфиг /etc/httpd/conf.d/mod_extract_forwarded.conf по сути он стандартный, только меняем значени MEFaccept на нужное >[оверквотинг удален] | ||
| Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору | ||
| 17. «Не работает allow, deny, когда apache + mod_rpaf + .htaccess» | +1 + / – | |
| Сообщение от AL | ||
Правильно так: и всё работает как надо. Для справки. Как обрабатываются эти дериктивы: Order Allow,Deny Order Deny,Allow | ||
| Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору | ||
| 18. «Не работает allow, deny, когда apache + mod_rpaf + .htaccess» | –1 + / – | |
| Сообщение от Alan (??) on 02-Мрт-12, 15:49 | ||
| ||
| Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору | ||
| 19. «Не работает allow, deny, когда apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от ALex_hha (??) on 09-Мрт-12, 01:23 | ||
# cat .htaccess xxx.xxx.157.114 — — [08/Mar/2012:23:17:12 +0200] «GET /test/ HTTP/1.0» 403 283 «-» «Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2» xxx.xxx.238.231 — — [08/Mar/2012:23:17:27 +0200] «GET /test/ HTTP/1.0» 200 61688 «-» «Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2» [Thu Mar 08 23:17:12 2012] [error] [client xxx.xxx.157.114] client denied by server configuration: /var/www/vhosts/domain.com.ua/test/ # httpd -v # apachectl -t -D DUMP_MODULES | grep rpaf # nginx -v | ||
| Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору | ||
| 20. «Не работает allow, deny, когда apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от alan (??) on 09-Мрт-12, 01:42 | ||
>[оверквотинг удален] | ||
| Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору | ||
| 21 . «Не работает allow, deny, когда apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от ALex_hha (??) on 09-Мрт-12, 02:20 | ||
| ||
| Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору | ||
| 22 . «Не работает allow, deny, когда apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от PavelR (ok) on 16-Мрт-12, 17:01 | ||
Версия mod_rpaf играет роль. Используйте 0.6 или патченную 0.5. | ||
| Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору | ||
| 23 . «Не работает allow, deny, когда apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от PavelR (ok) on 30-Мрт-12, 00:10 | ||
Выше, в http://www.opennet.ru/openforum/vsluhforumID8/6014.html#17 верно написали, как правильно пользоваться директивами (Order / Allow / Deny) .htaccess Небольшая проверка показывает, что директивы .htaccess отрабатывают идентично как при наличии, так и при отсутствии mod_rpaf-0.6. | ||
| Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору | ||
| 24 . «Не работает allow, deny, когда apache + mod_rpaf + .htaccess» | + / – | |
| Сообщение от baddan | ||
| модуль mod_extract_forwarded не удалось скомпилить и подключить по нормальному иза ошибки какойто с прокси, в принцыпе там в исходнике правится #define, но почемуто после этого не стало работать, то что работало в centos. вот что получилось и работает. RPAFenable On Nginx. 1.2 # access_log /home/www/tube/site.net/log/ng-acc.log; location / < /contents/videos/ < /contents/videos_sources/ < /contents/albums/sources/ < /contents/albums/main/700×525/ < * ^.+\.(gif|jpg|mpg|mp3|mpeg|avi)$ < /admin/include/get_upload_status.php < ——————————— Источник | ||