Использование .htaccess Взято с undergroundteam.org Назначение файла .htaccess .htaccess - это файл, в котором можно задавать настройки веб-сервера для каталога, в котором этот файл лежит и его подкаталогов (если .htaccess есть в корневом каталоге сайта, его действие будет распространяться на весь сайт, однако, если в каком-нибудь каталоге лежит другой .htaccess, то он будет «главным» в этом каталоге и его подкаталогах - если те, в свою очередь, не содержат своих .htaccess). Настройки, не упомянутые в .htaccess, будут определяться исходя из настроек сервера "по умолчанию" и настроек, указанных в вышележащих .htaccess. Пожалуй, наиболее часто .htaccess используется для ограничения доступа к определенным каталогам и файлам сайта. Краткий перечень директив файла .htaccess DirectoryIndex index.php3 Устанавливает файл для директории, который грузится по умолчанию. Возможно указание нескольких имен через пробел (пример: DirectoryIndex index.php3 index.htm index.phtml), тогда сервер будет просматривать список слева направо и выдаст по умолчанию первый существующий файл. CharsetDefault windows-1251 Кодировка, которую сервер выдает броузеру по умолчанию. CharsetSourceEnc windows-1251 Кодировка, в которой Вы должны закачивать файлы на сервер. ErrorDocument 404 /index.php3 Файл, который выдает сервер в случае, если произошла ошибка с указанным номером. 404-я ошибка возникает каждый раз, когда запрошенная страница не найдена на сервере. Об использовании .htaccess для ограничения доступа к каталогам сайта написано здесь. Как закрыть директорию паролем ? Вы можете воспользоваться панелью управления вашего сайта. Так же, Вы можете воспользоваться файлом .htaccess - его следует положить в защищаемую директорию с вот таким содержимым: # Access file order allow,deny allow from all require valid-user Authname DirectoryName Authtype Basic AuthUserFile /home/./.passwd Этот файл лучше положить в директорию недоступную через WWW. Узнать полный путь доступа к этому файлу лучше через telnet, зайдите в директорию с файлом .passwd и наберите команду pwd, и Вы увидите полное имя директории. Создать файл с паролями Вы можете на своем компьютере с помощью программы htpasswd, которую нужно запускать через shell-доступ. Наберите команду: htpasswd [-c] .passwd username Параметр -c нужен только в том случае, если Вы создаете новый файл с паролями. Если Вы хотите добавить нового пользователя к уже существующему файлу, то указывать -с не нужно. username - имя добавляемого пользователя После того, как Вы нажмете ENTER, Вам нужно ввести (два раза во избежание ошибки) пароль для нового пользователя. Это все! Так же, файл с паролями можно формировать и из скрипта, например на Perl: open(F, ">>.passwd") || die " Can`t append file .passwd"; print F "$username:". crypt($password, 'ms') ."\n"; close(F); system "chmod 766 .htpasswd"; в переменных $username и $password имя и пароль нового пользователя. Вместо 'ms' можно подставлять любые две буквы. Переадресация Весьма полезное применение переадресации - организация download обновленных версий вашего продукта. Когда выкладывается новая версия продукта, обычно меняется какой-то кусок в имени файла. Это очень удобно, так как это позволяет избежать путаницы в версиях. Однако когда Вы выпускаете обновленную версию, то возникает проблема. Вам придется хранить и старые версии, так как ходить к Вам будут за Вашим продуктом и по старым ссылкам. Избежать этого довольно просто использовав команду переадресации www-сервера Apache. Предположим что Ваша последняя версия MySoft12.exe, а предыдущие были MySoft10.exe и MySoft11.exe Создайте файл .htaccess и напишите в нем следующие строки: Redirect /MySoft11.exe http://www.your.com/MySoft12.exe Где: - Redirect - собственно команда переадресации; - /MySoft11.exe или /MySoft10.exe старые имена файлов; Правило формирования этого параметра такое: к имени Вашего сервера http://www.your.com будет добавлено то, что Вы напишите. Поэтому не забывайте про слэш в начале пути к файлу в этом параметре. - http://www.your.com/MySoft12.exe - полный интернет-адрес файла (!), который будет загружаться вместо /MySoft11.exe или /MySoft10.exe; Обратите внимание, что Вы можете написать здесь вообще любую ссылку в Интернет. (можно, также, использовать и RedirectMatch - это то же, что и просто Redirect, но позволяет использовать * и прочие выражения, например: RedirectMatch (.*)\.gif$ http://www.anotherserver.com$1.jpg ) Как это будет работать. Вот вырезка из лога запроса на подобную ссылку: (использована программа ReGet http://www.reget.com/default.htm ) > OUT GET /MySoft10.exe HTTP/1.0 > IN HTTP/1.1 302 Found > IN Location: http://www.your.com/MySoft12.exe > IN Connection: close > IN Content-Type: text/html > INF Запрос перенаправлен на http://www.your.com/MySoft12.exe > INF Начинаем закачку http://www.your.com/MySoft12.exe. Попытка N 1 > OUT GET /MySoft12.exe HTTP/1.0 То есть по какой бы ссылке не качал будущий пользователь Вашу программу, он все равно загрузит самую последнюю. Настройка сообщений об ошибках Когда пользователь запрашивает какую-то страницу, которой нет на Вашем сайте, например неверно набран URL, то появится стандартное сообщение об ошибке: "File not found". Скорее всего, после этого пользователь закроет окно браузера и Вы его (клиента) потеряете. Можно ли вместо стандартного сообщения выдать какую-то свою страницу? Да. Для этого, опять же, надо прописать в файл .htaccess (и положить его в папку web) одну строчку: ErrorDocument 404 http://www.mydomain.com/404.html Все. Осталось создать страницу 404.html, где показать, например, карту Вашего сайта. (!) Для кода/ошибки 401 "Unauthorized" нельзя использовать полный адрес URL в качестве параметра для директивы ErrorDocument. Как сделать чтобы по умолчанию открывался не index.html, а index.htm? Нужно удалить файл index.html и положить index.htm На самом деле, достаточано положить в директорию файл .htaccess: DirectoryIndex index.htm index.html index.shtml (и т.д.) Действие этого файла распространяется на все вложенные папки. Как сделать чтобы файл с нестандартным расширением открывался как текстовый в окне браузера? Чтобы файл с расширением, например, .lng открывался как текстовый в окне браузера, необходимо в файл .htaccess добавить строчку: AddType text/plain .lng А если надо чтобы сохранялся на диске (как *.zip, *.exe, etc) то строчка должна выглядеть так: AddType application/octet-stream .lng Если в папке нет index.html , как сделать чтобы не показывалось ее содержимое? Положите туда файл .htaccess с одной строкой Options -Indexes При этом будет выдана ошибка.