Как известно, самым популярным на сей день веб-сервером является Apache в различных версиях (а вовсе не IIS, как утверждает Microsoft). Его ставят на свои сервера большинство хостителей, услуга же "NT-хостинга" (т.е. как раз IIS) стоит обычно дороже. Оно и понятно - и неудобный он для привыкших к Linux админов, и глючный (почему-то червяки плодятся именно под IIS), и поэтому дорогой.
Настраивать Apache можно по-разному. Кому-то хочется, чтобы на его страницы можно было переходить только по ссылкам с титульной, кому-то хочется, чтобы при отсутствии в папке индексного файла выводилось содержимое папки, кому-то хочется сам индексный файл переименовать в yakrutoiadmin.html... Нет никаких проблем, если вы один на своем личном сервере - редактируете настройки Apache как вам хочется, и все пучком. А если вы пользуетесь чужим хостингом?
Представьте себе ситуацию, когда доблестный Антон Нехороших мужественно рожает новые настройки по каждой новой заявке, которая противоречит предыдущей. Что получится? Правильно, ничего работать ни у кого не будет. А теперь представьте, что настройки у всех одинаковые, т.е. такие, какие нужны большинству (которое, как это обычно бывает, вовсе даже не большинство, а просто стадо). В обоих случаях нормальному человеку делать будет нечего, как клепать уродские сайты.
На помощь человечеству приходит .htaccess - защитник всего живого на планете! С помощью этого чудесного файла можно изменять настройки Apache применительно к конкретным папкам конкретного пользователя. На самом деле далеко не всегда этот файл так называется, и работать он будет тоже далеко не всегда. Все опять зависит от настроек апача.
В файле настройки Apache есть несколько замечательных директив, а именно AccessFileName и AllowOverride. Первая задает имя файла настройки (по умолчанию .htaccess), вторая разрешает/ запрещает его использование в папке. Чтобы работали настройки .htaccess, обе директивы должны быть настроены соответствующим образом. Только убедившись в том, что это так, можно начинать создавать собственный вариант защитника всего живого. Кстати, большинство бесплатных хостингов, хотя и держат у себя Apache, использование .htaccess не разрешают.
В первую очередь убедитесь, что ваш сервер использование .htaccess разрешает. Для этого можно создать файл .htaccess (он должен лежать в настраиваемой папке, т.е. в корне), состоящий из одной только строки:
ErrorDocument 404 /missing.html
В missing.html запишите что-нибудь типа
<html><head> <title>Дурак косой</title> </head><body> Вы пытаетесь попасть на несуществующую страницу. </body> </html>
Теперь попробуйте набрать что-то типа http://вашадрес.мд/dfdfdfdfd. Если вас обозвали косым дураком, значит .htaccess у вас работает, а заголовок врет :). Кстати, вот и первое семейство директив. Вы можете настроить реакцию сервера на любую ошибку, используя конструкцию:
ErrorDocument номерошибки /имяфайла.html
Напоминаю, что номера ошибок расшифровываются так: 401 - Требуется авторизация (Authorization Required) 403 - Доступ запрещен (Forbidden) 404 - Страница не найдена (Not Found) 500 - Ошибка в скрипте (Internal Server Error)
Еще одна важная директива позволяет настроить тот самый многострадальный индексный файл. Например, можно изменить index.shtml на privet.php:
DirectoryIndex privet.php
Следующие директивы указывают, в какую кодировку Apache должен перекодировать файлы, и в какой кодировке вы их на сервер закачиваете (Russian Apache). Напоминаю, что кодировка может быть еще, например, koi8-r.
Еще обычно получается плохо, когда пользователь может посмотреть список файлов в папке, если там нет индексного файла. Чтобы избежать этого эффекта, необходимо добавить в .htaccess строчку
Options -Indexes
Или, например, злобный хоститель заботится о загрузке процессора своего сервера, и заставляет делать файлам с SSI-директивами расширение shtml... Изменить это легко и просто, добавлением в .htaccess всего одной только строчки:
AddHandler server-parsed .shtml .shtm .htm .html
Теперь, как нетрудно догадаться, все перечисленные расширения будут знаменовать собой файл, содержащий SSI включения. А вот чтобы использовать в .html файлах PHP включения, придется сделать немного хитрее, так как придется учитывать то, что SSI и PHP в одном файле использовать нельзя. Надо писать так:
Еще может возникнуть проблема, заключающаяся в том, что закачиваемые на сервер скриптом файлы получаются в неправильной кодировке. Можно попробовать решить ее так:
<Location /path/to/upload.cgi> CharsetDisable On </Location>
Более подробная информация о директивах .htaccess уже не относится к разделу FAQ-документов, и может обсуждаться в форуме. Остается добавить, что крайне сложно уломать Notepad, в котором и редактируются файлы, сохранить файл без имени, да еще и с таким нестандартным расширением, как .htaccess. Необходимо сохранить его с типом "Все файлы/All files" и тшательно проследить, что умный Notepad не исправил нашу "ошибку". P.S. .htaccess действует на все папки, вложенные в ту, где у вас он и лежит. На нее тоже действует.