|
После опубликования статьи Защита сайта с помощью .htaccess и .htpasswd Мне пришло несколько писем с просьбой рассказать, что еще можно сделать с помощью директив файла .htaccess. Для начала немного вводной информации: .htaccess (с точкой в начале имени) - это файл, который дает возможность конфигурировать работу сервера в отдельных директориях (папках), не предоставляя доступа к главному конфигурационному файлу. Например, устанавливать права доступа к файлам в директории, менять названия индексных файлов, самостоятельно обрабатывать ошибки Apache, перенаправляя посетителей на специальные страницы ошибок. Это достаточно удобно в случае, когда Вам необходимо переопределить управляющие директивы WEB-сервера для конкретного каталога или сайта (если на WEB-сервере несколько сайтов) и не хочется менять установки для всех остальных. А так же в случаях, когда у Вас нет доступа к файлу httpd.conf. Файл .htaccess может быть размещен в любом каталоге. Директивы этого файла действует на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess). Для того, что бы эти файлы .htaccess можно было использовать - необходимы соответствующие настройки главного конфигурационного файла. Как правило, подавляющее большинство хостеров разрешают использовать настройки в файле .htaccess.
Теперь собственно о файле и допустимых директивах в нем. Пути к файлам и директориям должны указываться от корня сервера, например, /pub/home/server/html/Если вы не знаете путь от корня сервера, то Вы можете его узнать, спросив у администратора сервера, либо можете посмотреть сами, запустив на сайте функцию PHP - phpinfo(). Вам необходимо найти переменную doc_root и посмотреть ее значение - это будет путь от корня сервера до Вашей основной директории. В именах доменов обязательно должны быть указаны протоколы, например: Redirect / http://www.test.ru Глобальное перенаправление (редирект) на другой адрес: Redirect / http://www.test.ru Перенаправление (редирект) только при запросе определенных страниц: redirect /data http://www.test.com/data redirect /forum http://www.test.com/forum При запросе страниц из каталогов data и forum будет произведено перенаправление на новые адреса. Перенаправление всех запросов кроме: RewriteEngine On RewriteRule !.(gif|jpg)$ index.php Все запросы кроме запросов к файлам с расширениями .gif и .jpg будут перенаправлены на файл index.php Перенаправление (редирект) только посетителей с определенным IP-адресом: SetEnvIf REMOTE_ADDR 192.168.11.1 REDIR="redir" RewriteCond %{REDIR} redir RewriteRule ^/$ /data.html Если посетитель имеет IP-адрес 192.168.11.1, то ему будет открыта страница data.html. Изменение названия индексной страницы: DirectoryIndex index.html index.php index.shtml Можно указать несколько индексных страниц. При запросе каталога они будут искаться в том порядке, в котором перечислены в директиве DirectoryIndex. Если не будет найден файл index.html, то будет произведен поиск файла index.php и т.д. Выполнять код PHP в файлах HTML RemoveHandler .html .htm AddType application/x-httpd-php .php .htm .html .phtml Добавив эти строки в .htaccess вы дадите директиву серверу выполнять инструкции PHP не только в файлах с расширением *.php и *.phtml, но и в файлах с расширением *.htm и *.html. Обработка ошибок Apache ErrorDocument 401 /401.html ErrorDocument 403 /403.html ErrorDocument 404 /404.html ErrorDocument 500 /500.html При возникновении этих ошибок посетитель будет перенаправлен на специально созданные страницы.
401 ошибка - Требуется авторизация (Authorization Required). 403 ошибка - пользователь не прошел аутентификацию, доступ запрещен (Forbided). 404 ошибка - Документ не найден (Not Found). 500 ошибка - Внутренняя ошибка сервера (Internal Server Error). Запрет на отображение содержимого каталога при отсутствии индексного файла Options -Indexes Определение кодировки, в которой сервер "отдает" файлы AddDefaultCharset windows-1251 Определение кодировки на загружаемые файлы CharsetSourceEnc windows-1251 Запрет доступа ко всем файлам deny from all Запрещен доступ ко всем файлам и каталогам в текущей директории. Разрешить доступ только с определенного IP-адреса order deny,allow deny from all allow from 192.168.11.1 Строка order deny,allow определяет, в каком порядке следует выполнять директивы. Сначала выполняется директива запрета доступа, а затем разрешается доступ только для IP-адреса 192.168.11.1. Если в первой строке поменять порядок следования директив на order allow,deny, то доступ для данного IP-адреса не будет открыт, так как директива deny, выполняемая последней перекроет действия директивы allow. Запретить доступ с определенного IP-адреса deny from 192.168.11.1 Запретить доступ к определенному файлу deny from all Запрещен доступ посетителей к файлам config.php. Этот запрет не действует на скрипты web-сервера. Они по прежнему будут иметь доступ к этому файлу. Запретить доступ к файлам с определенным расширением deny from all Здесь запрещен доступ к файлам с расширением *.ini. Директива, при указании имени файлов, позволяет использовать подстановочные символы. ? - любой одиночный символ * - любая последовательность символов, исключая символ / (слеш) Запретить доступа к файлам с несколькими типа расширений deny from all Запрещен доступ к файлам с расширением *.inc, *.conf и *.cfg. Хотя директива, по умолчанию, не работает с регулярными выражениями, но их можно включить, поставив символ тильды (~) в опциях директивы. Синтаксис следующий: [тильда] [пробел] [далее_все_без_пробелов] Установка пароля на директорию AuthName "Admin page" AuthType Basic AuthUserFile /pub/home/server/.pass require valid-user Установка прав доступа с помощью файлов .htaccess более подробно рассмотрена статье: Защита сайта с помощью .htaccess и .htpasswd Источник:http://www.kamaikin.ru .htaccess
Views: 447
 Be first to comment this article | | |