|
|
Модератор форума: Dimitro, LightInDarkness |
Форум Web раздел Web форум [Manual] Возможности файла .htaccess |
[Manual] Возможности файла .htaccess |
Итак, самый популярный веб-сервер - это Apache. Одним из самых весомых преимуществ этого сервера (помимо бесплатности, быстроты и небольшого потребления ресурсов) является гибкость настройки.
Итак, вместо того, что бы каждый раз редактировать файл httpd.conf, можно поступить следующим образом. В директории, для которой хотите сменить настройки Apache по-умолчанию, создайте файл ".htaccess". Далее в этом файле поместите все настройки, которые необходимо применять для текущей директории. Просто, как и все гениальное. Директивы из файла ".htaccess" имеют более высокий приоритет, чем определенные в глобальном конфигурационном файле httpd.conf. Данный подход дает владельцам сайтов возможность управлять параметрами сервера только для их директорий, не беспокоя администраторов сервера. Возможности файла ".htaccess" 1. Разрешить или запретить доступ к файлам с определенного IP адреса. Предположим, что вы создали прототип веб сайта и решили показать его своему другу/заказчику. Ваше естественное желание, что бы открыть данный сайт мог только этот человек и никто другой. Этого можно добиться, поместив следующие директивы в файл ".htaccess": Code order allow,deny deny from all allow from <xxx.xxx.xxx.xxx> allow from googlebot.com Как видите, можно указать разрешение на просмотр ресурса либо по IP адресу, либо по доменному имени. В примере файлы разрешено просматривать роботу Google, который приходит с доменного имени googlebot.com. Возможно указание нескольких IP адресов через пробел. Также возможно указывать лишь честь IP адреса. Например, для того, что бы разрешить видеть ваш сайт всем из локальной сети, нужно написать что-то подобное: allow from 192.168 То же самое можно проделать, если вы хотите запретить кому-либо просмотр вашего сайта. Результат должен выглядеть вот так: Code order deny,allow allow from all deny from 192.168.35.111 deny from googlebot.com 2. Запрет или разрешение доступа к определенным файлам. Запрет и разрешение доступа к файлам в директории - это прекрасно. Однако, что если необходимо закрыть доступ не ко всем, а только в определенным файлам в директории? Для этого существует директива Files, которая позволяет задать файлы к которым будут применяться вложенные директивы. Рассмотрим несколько примеров: Code <Files "test.php"> order allow,deny deny from all </Files> Данная конструкция запрещает доступ только к одному файлу: test.php Code <Files "*.inc.php"> order allow,deny deny from all </Files> А этот пример запрещает доступ к файлам с окончанием: .inc.php В выражениях можно использовать символы: * - для любой последовательности любых символов, ? - для одного любого символа. Так же существует директива (FilesMatch), позволяющая задавать совпадение имен файлов через регулярное выражение. Если вы не знаете, что такое регулярное выражение, то можете посмотреть тут. При помощи регулярных выражений наш предыдущий пример можно записать вот так: Code <FilesMatch "inc.php$"> order allow,deny deny from all </FilesMatch> Как видите, нам уже не нужен знак * в начале (регулярные выражения по-умолчанию ищут подстроку). Но теперь мы должны явно указать на то, что имя файла должно оканчиваться на inc.php. Знак $ и служит для указания на то, что inc.php должно быть в конце строки. Регулярные выражения - это очень мощный инструмент, позволяющий задать достаточно сложные шаблоны совпадений. Однако не стоит ими увлекаться. Их обработка требует от сервера на порядок больше вычислительных ресурсов. Поэтому, старайтесь избегать их использования. Хочу обратить ваше внимание на одни факт. Запрещение обращения к файлу/файлам осуществляется только для протокола http. Из скриптов, которые выполняются на сервере, вы всегда может читать все "закрытые" файлы. 3. Организация перенаправления (редиректа). При помощи файла ".htaccess" можно организовать перенаправление пользователя, если это необходимо. Предположим, что необходимо сделать так, чтобы при доступе к файлу www.site.ru/xxx.html пользователь перенаправлялся бы на страницу www.site.ru/yyy.html. Сделать это можно так: Code Redirect 301 /xxx.html http://www.site.ru/yyy.html Цифра 301 указывает серверу, какой редирект использовать. 301 - постоянный редирект. 302 - временный. Постоянный - используется если страница была перемещена навсегда. Временный - если страница только временно недоступна (например, сайт находится в переработке). Если необходимо перенаправить сразу список файлов, соответствующих некоторой маске, то используется вот такая конструкция: Code RedirectMatch 301 /test(.*) http://www.site.ru/$1 Данная конструкция будет перенаправлять запросы к страницам, начинающимся со слова test на страницу без слова test вначале. Например, при доступе к http://www.site.ru/test_1.html пользователь будет перенаправлен на страницу http://www.site.ru/_1.html $1 обозначает все то, что соответствует выражению в скобке (в нашем случае - это любое количество любых символов). 4. Задание кодировки страницы. При помощи файла ".htaccess" можно задать кодировку страницы. После этого сервер сам будет сообщать браузеру о кодировке и вам не будет нужно вставлять в код страницы мета тег: Code <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> Задать кодировку можно так: Code AddDefaultCharset windows-1251 Эту директиву можно применять внутри FilesMatch блока, т.е. задать кодировку только для определенных файлов, что иногда может быть очень полезно. 5. Отображение скриптов в браузере. Если вы хотите заставить сервер отобразить, например, perl или python скрипт в браузере вместо того, что бы выполнить его, то используйте следующую директиву: Code RemoveHandler cgi-script .pl .py .php Для скриптов на PHP данный метод будет работать, только если PHP установлен как cgi (о видах установки PHP я расскажу в одном из ближайших выпусков рассылки). Если же PHP установлен как модуль Apache (mod_php), то необходимо применить другой метод: Code AddType text/html .php 6. Собственные страницы ошибок. Иногда случаются различные ошибки, и тогда сервер отправляет пользователю некую страницу с ошибкой по-умолчанию. Обычно это простая надпись об ошибке на белом фоне. Для того, что бы ваши пользователи увидели красивую страницу с ошибкой, с вашим собственным дизайном и текстом, следует использовать следующую директиву: Code ErrorDocument <код_ошибки> /error.php Здесь "код_ошибки" - код ошибки, в ответ на которую будет выдана данная страница. Полный список кодов ошибок вы можете посмотреть здесь. Например, для того что бы при обращении к несуществующей странице вашего сайта (ошибка 404) пользователь был переадресован на страницу 404.php нужно написать следующее: Code ErrorDocument <404> /404.php Возможности файла ".htaccess" очень обширны и даже на простое их перечисление займет объем небольшой книги. Дальнейшее изучение этого вопроса я предоставляю вам самостоятельно. |
| |||
| |||