Главная | Контакты | Настройки СМЕНИТЬ ПАЛИТРУ:

Главная > Программы > Apache > htaccess

Настройка веб-сервера Apache с помощью конфигурационного файла .htaccess

  1. Примите во внимание
  2. Понятие о конфигурационном файле .htaccess
  3. Правила редактирования .htaccess
  4. Определение своего индексного файла (стартовой страницы)
  5. Переопределение кодировки страниц и загружаемых на сервер файлов
  6. Запрет выдачи списка файлов в каталоге
  7. Переопределение страниц ошибок
  8. Регулярные выражения
  9. Запрет доступа к ресурсам
  10. Примеры конфигурации .htaccess

Примите во внимание!

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

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

Файл имеет название .htaccess (первый символ - точка) а не .HTACCESS или .Htaccess и должен быть записан в UNIX-формате. В случае если файл записан в не верном формате сервер будет выдавать ошибку с кодом 500.

Справка: Если вы используете ОС Windows, для создания нового файла .htaccess необходимо открыть пустой текстовый документ с расширением txt и после его заполнения для сохранения файла выбрать опцию "Сохранить как" в поле <Имя файла> ввести .htaccess а в поле "Тип файла" указать "Все файлы" или просто скопировать уже существующий и вносить в него свои директивы.

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

При работе нужно учитывать то, что администратор может запретить выполнение команды, которая, в принципе, может исполняться из .htaccess. Как правило, это выражается тем, что при правильном синтаксисе директив веб-сервер выдает ошибку с кодом 500, вместо ожидаемого результата.

Понятие о конфигурационном файле .htaccess

Наш хостинг в качестве веб-сервера использует Apache. Данное ПО осуществляет обработку http-запросов и выдает результат, соответствующий обработанному запросу - это может быть html-документ, картинки, файлы и многое другое. Apache является основой для большинства сайтов в мире (около 90% ресурсов в Интернете используют данный веб-сервер) и свою популярность он приобрел благодаря своей функциональности и надежности. Apache легко интегрируется с широко применяемыми СУБД (к примеру MySQL) и интерпретаторами таких популярных языков как PHP и Perl.

Вы, как потребитель услуг хостинга сайтов (или виртуального хостинга), можете легко сконфигурировать веб-сервер под нужды своего сайта, благодаря гибкой настройки Apache, допускающей децентрализованное управление конфигурацией с помощью специально предназначенного для этого файла .htaccess. Данный файл переназначает многие директивы из главного файла конфигурации веб-сервера Apache httpd.conf для вашего сайта или отдельных страниц. Однако, возможен случай ограничения доступа для пользователей к определенным директивам.

Справка: .htaccess - файл дополнительной конфигурации веб-сервера Apache, применяющийся для управления работы веб-сервера в отдельных каталогах. Помещенные в этот файл директивы, обрабатываются веб-сервером и выполняются действия, соответствующие настройкам.

Файл .htaccess может быть размещён в любом каталоге. Действие его директив распространяется на каталог, в котором располагается, и на его дочерние каталоги (если эти директивы не переопределены в файле .htaccess, находящемся в дочернем каталоге). При каждом обращении к веб-серверу .htaccess читается заново, поэтому изменения, которые были внесены Вами в этот файл, сразу же вступают в силу. Так же файлы .htaccess не доступны пользователю из браузера, поскольку они являются служебными.

Правила редактирования .htaccess

Основные правила создания / редактирования файла .htaccess, несоблюдение которых приводит к ошибкам сервера:

  • пути к файлам или каталогам указываются от корня сервера;
  • адреса документов на других сайтах записываются с указанием протокола (http://my-site.ru/ а не www.my-site.ru/);
  • строковые комментарии начинаются с символа #;
  • можно использовать специальные переменные окружения, например %{ REMOTE _ ADDR } или %{ HTTP _ REFERER }.

Определение своего индексного файла (стартовой страницы)

Индексный файл (файл-индекс или просто стартовая страница) - это файл, который открывается по умолчанию при обращении не к конкретному файлу, а к каталогу. Примером такого обращения является переход по адресу "http://my-site.handyhost.ru/atricls" (здесь atricls - каталог) и веб-сервер отобразит один из существующих в данном каталоге индексных файлов из списка заданных по умолчанию: index.html, index.htm, index.php, index.php3, index.phtml, index.shtml, default.htm или default.html. То есть при переходе по адресу "http://my-site.handyhost.ru/" отобразится страница "http://my-site.handyhost.ru/index.html" (или index.php и т.д.). Если веб-сервер не найдет индексный файл, то выдаст список файлов в каталоге или ошибку с кодом 403.

Если Вы хотите сделать стартовой страницей (индексным файлом), скажем, my-page.php, то необходимо поместить в соответствующий файл .htaccess следующую директиву:

DirectoryIndex my-page.php

Тогда при переходе по адресу "http://my-site.handyhost.ru" отобразиться страница "http://my-site.handyhost.ru/my-page.php".

В данной директиве можно указывать несколько индексных файлов:

DirectoryIndex my-page.shtml my-page.php my-page.php3 my-page.html

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

Кодировка страниц

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

Пример:

AddDefaultCharset utf-8

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

Если же нужно перезадать кодировку на koi8-r для отдельных файлов, например, для html-документов, то для этого поместите в .htaccess строку:

AddType "text/html; charset=koi8-r" .html .htm .shtml

Если на вашем сайте есть страницы в разных кодировках,(Windows-1250, Windows-1252, UTF-8, ISO-8859-1), то, скорей всего, возникнет необходимость отключить принудительную выдачу заголовка с кодировкой по умолчанию. Для этого в .htaccess добавляется строка:

AddDefaultCharset Off

Но тогда на каждой html-странице должна быть прописана соответствующая кодировка в рамках тега HEAD в виде мета тега:

<meta http-equiv="content-type" content="text/html; charset=Windows-1251">

С точки зрения программирования удобней всего размещать страницы с разными кодировками в разных каталогах, где будут находиться соответствующие файлы .htaccess (для многоязычных сайтов удобно размещать страницы на одном языке в отдельном каталоге, например, в каталоге ru размещаются страницы с кодировкой Windows-1251).

Кодировка загружаемых на сервер файлов

С помощью директив в .htaccess можно задать перекодировку файла при его загрузке на сервер. Например, мы хотим сообщить веб-серверу, чтобы все получаемые файлы имели кодировку windows-1251, тогда необходимо указать кодировку на загружаемые файлы:

CharsetSourceEnc windows-1251

Для отмены перекодировки сервером файлов служит следующая директива:

CharsetDisable On

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

По умолчанию в случае отсутствия файла-индекса (ссылка на "Определение своего индексного файла") веб-сервер выводит список файлов каталога, т.е. в файл конфигурации веб-сервера включена директива:

Options +Indexes

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

Options -Indexes

В случае, если Вам понадобиться разрешить просмотр списка файлов, за исключением части файлов, например, с расширениями php и gif, то необходимо включить в конфигурационный файл следующую строчку:

IndexIgnore *.php *.gif

Переопределение страниц ошибок

Наиболее частые ошибки выдаваемые веб-сервером при обработке различных запросов:

  1. 403 - доступ запрещен (Forbidden);
  2. 404 - запрашиваемый документ (файл, директория) не найден (Not Found);
  3. 500 - внутренняя ошибка сервера (Internal Server Error). При обработке запроса на сервере один из его компонентов выдал аварийный отказ или столкнулся с ошибкой конфигурации. Как правило, причиной является ошибка в синтаксисе файла .htaccess.

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

ErrorDocument 403 /error/403error.html
ErrorDocument 404 /error/404error.html
ErrorDocument 500 /error/500error.html

Регулярные выражения

Регулярные выражения часто применяются в различных дерективах для определения списков файлов или адресов. Важно запомнить синтаксис регулярных выражений для успешной настройки .htaccess!

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

  • "(" и ")" используются для выделения групп символов
  • "^" начало строки.
  • "$" конец строки
  • "." любой символ.
  • "|" логическая "или" (альтернатива). То есть выражения "u|i" и "(QWE|RTY)" означают "u или i" и "QWE или RTY" соответственно.
  • "?" присутствие или отсутствие символа (или группы символов), после которого встречается данный символ. Например, выражению "php3?" подойдет и строка "php", и строка "php3", а "(my-)?site" соответствуют строки "my-site" и "site".
  • "*" отсутствие или присутствие неограниченное число раз подряд символа (или группы символов), после которого встречается данный символ. Например, выражению "jpe*g" соответствуют строки "jpg", "jpeg" и "jpeeeg".
  • "+" аналогичен символу "*" с той лишь разницей, что предшествующий ему символ обязательно должен присутствовать хотя бы один раз. Например, к выражению "jpe+g" подходят строки "jpeg" и "jpeeeeeeeeg", но не "jpg"
  • "\" ставится перед спецсимволами перечисленными выше, если они нужны в своем первозданном виде. Например, выражению "i\+u" соответствует только одна строка "i+u".

Запрет доступа к ресурсам

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

  1. Order устанавливает порядок работы директив Deny и Allow. Данный порядок может принимать значения [Deny , Allow] или [Allow , Deny].
    Синтаксис: Order Deny,Allow
  2. Deny запрещает доступ определенных клиентов к ресурсам.
    Синтаксис: Deny from all|host
    Здесь host - IP адрес или имя хоста (домена).
  3. Allow разрешает доступ определенных клиентов к ресурсам.
    Синтаксис: Allow from all|host
    Здесь host - IP адрес или имя хоста (домена).

Примеры конфигурации .htaccess

  1. Запрет на доступ к сайту всем.
    Order Deny,Allow
    Deny from all
    
    Примечание: Теперь при попытке обратиться к сайту любой посетитель получит ошибку 403.
  2. Разрешение доступа к сайту определенного IP.
  3. Order Deny,Allow
    # запрет для всех
    Deny from all
    # разрешаем только 192.168.1.1
    Allow from 192.168.1.1
    
  4. Запрет на доступ для определенного IP адреса и хоста.
  5. Order Allow,Deny
    Allow from all 			       	#разрешаем всем
    Deny from rambler.ru	        	#запрет для хоста
    Deny from 192.168.1.1, 192.168.1.2 	#запрет для IP адресов
    
  6. Запрет на доступ к определенному файлу (к файлу с паролями .htpasswd) для всех кроме посетителя с IP адресом 97.84.88.14
  7. <Files ".htpasswd">
    Order Deny,Allow
    Deny from all
    Allow from 97.84.88.14
    </Files>
    
  8. Запрет на доступ к ресурсу пользователям с IP адресами 97.84.88.14, 84.88.15 использующие метод GET для передачи данных браузером:
  9. <Limit GET>
    Order Allow,Deny
    Allow from all
    Deny from 97.84.88.14, 97.84.88.15
    
    </Limit>
    
  10. Запрет на доступ к определенной группе файлов (файлы с расширениями "gif", "jpeg", "jpg" и "png") для всех посетителей кроме 97.84.88.14
  11. <FilesMatch "\.(gif|jpe?g|png)$">
    
    Order Deny,Allow
    Deny from all
    Allow from 97.84.88.14
    </FilesMatch>
    
    Здесь для определения группы файлов использовались регулярные выражение.

Материал взят с сайта: http://handyhost.ru/books/apache-help.html

Главная > Программы > Apache > htaccess