Разработка сайтов, создание сайтов
главная / Создание сайтов / Этот таинственный файл .htaccess

Этот таинственный файл .htaccess

Наверняка при загрузке различных скриптов или просто на сервере Вам доводилось встречать такой файл .htaccess . Обратите внимание что наличие точки впереди - является обязательным!!! Если Вы не видите этот файл, но знаете что он должен быть, то скорее всего в настойках Вашей Винды не показываются скрытые файлы. Исправить это легко заходим в меню Сервис/Свойства папки/Вид/Скрытые файлы и папки. Здесь устанавливаем переключатель в положение Показывать скрытые файлы и папки. Жмем Применить, ОК. Или же посмотрите каким-то файловым менеджером, например я пользуюсь Total Commander и Вам рекомендую.

Многие даже продвинутые web-мастера, не всегда знают что этот файл означает, как с ним работать и следовательно не могут использовать все доступные возможности.

Давайте разберемся с назначением и использованием .htaccess

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

Файл .htaccess может быть размещен в корневом каталоге веб-сервера (прямо в каталоге public_html) и в этом случае директивы из такого .htaccess действуют по всему веб-серверу. Также .htaccess может находиться и в конкретном подкаталоге (папке) сервера и тогда директивы, которые указаны в этом файле, "перекрывают" действие директив из "основного" файла, который размещен в каталоге public_html или в любом каталоге более высокого уровня. То есть, действие директив из .htaccess наследуется сверху вниз, но не наоборот. Изменения, внесенные в файл, вступают в силу немедленно. Это связано с тем, что информация из .htaccess перечитывается при каждом обращении к веб-серверу Apache.

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

Пример простейшего использования возможностей конфигурирования Apache через файл .htaccess: Мы хотим "объяснить" веб-серверу что все html-документы, которые размещены на сервере, нужно "отдавать" клиенту в кодировке koi8-r, а не в windows-1251, как это сервер делает по умолчанию. Поместим в .htaccess строку:

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

Получив такой .htaccess, веб-сервер Apache станет выдавать клиентскому браузеру заголовок, в котором будет указано, что документ имеет кодировку koi8-r.



Рассмотрим другие примеры использования файла .htaccess :

Переопределение индексного файла

Ситуация: пользователь обратился к каталогу http://www.vash_domen.ru/katalog/. При таком запросе первым откроется и будет показан индексный файл index.html. Если вы хотите переопределить индексный файл и сделать так, чтобы первым открывался не index.html, а например файл prais.php. Сделать это можно поместив в файл .htaccess в соответствующем каталоге следующую инструкцию:

DirectoryIndex prais.php

Получив .htaccess с таким содержимым, веб-сервер Apache откроет по умолчанию именно файл prais.php .



Запрет доступа к некоторым файлам

Иногда возникает необходимость запретить доступ к определенным файлам. Например, к конфигурационным файлам, содержащим реквизиты доступа к базам данных, интерфейсам и т.п. Допустим, в файле config.cfg вы храните логин/пароль доступа к базе данных. Создаем в этой директории файл .htaccess с директивами:

Order allow, deny Deny from all

Теперь, если посетитель наберет в браузере нечто вида http://vash_domen/config.cfg, он получит ошибку ошибку 403 или вашу страницу для этой ошибки. Подробнее о страницах ошибок можно почитать здесь.



Как закрыть директорию паролем

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

Создаем в каталоге, к которому хотим ограничить доступ по паролю, файл .htaccess с такими директивами:

AuthType Basic AuthName "Some Name" AuthUserFile /public_html/XX/YY/.htpasswd require valid-user

Путь /public_html/XX/YY/.htpasswd обозначает полный путь к файлу паролей на диске сервера. Если, например, вы поместите файл .htpasswd (в нем будут пароли) в домашний каталог, куда вы попадаете зайдя на сервер по FTP, то путь к этому файлу будет иметь вид /public_html/XX/YY/.htpasswd.

В директиве AuthUserFile указываем абсолютный путь к файлу с логинами/паролями. Если вы создаете файл .htaccess на своем компьютере, а не сразу на сервере используя текстовый редактор, обратите особое внимание на то, что .htaccess должен передаваться по FTP строго в текстовом (ASCII) режиме.

Создаем файл паролей .htpasswd . Файл с паролями должен содержать строки вида login:password. Пароль должен быть зашифрован с использованием алгоритма MD5. Один из способов создать такой файл - воспользоваться программой, входящей в поставку Apache - htpasswd (обычно на сервере она находится в каталоге /usr/local/bin/, полный путь - /usr/local/bin/htpasswd). Использхование этой программы на каждом сервере индивидуально - уточняйте у своего хостера.

После окончания заведения всех логинов и паролей файлы нужно загрузить на сервер.



Заголовок last-modified

Иногда требуется, чтобы web-сервер выдавал HTTP-заголовок Last-Modified. К примеру, при регистрации вашего ресурса на Яндексе, возникает ошибка "Неправильные даты".

Для статических документов, согласно документации по Apache:

http://httpd.apache.org/docs/mod/mod_include.html#xbithack

cервер будет выдавать значение last-modified в том случае, если прописана директива "XBitHack full" (просто пропишите эту строку в .htaccess), и для файла, к которому происходит обращение, выставлен атрибут "исполняемый" для группы.

Это действительно для html-файлов. В скриптах last-modified выдается иными средствами. Например, если учесть то, что php-скрипт генерирует код динамически, то самым логичным будет в качестве last-modified отдавать текущую дату и время. Реализуется это следующим образом - в файле .htaccess прописываем следующую строчку:

("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

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

Источник: luksweb.ru
текущее:

НОВОСТИ

2011 г., «VisMech.ru»