Как известно, самым популярным на сей день веб-сервером является Apache HTTP Server в различных версиях (хотя Microsoft утверждает, что Internet Information Services). Его ставят на свои сервера большинство хостинговых компаний, услуга же «NT-хостинга» (т.е. как раз IIS) стоит обычно дороже. Оно и понятно — и неудобный он для привыкших к Linux админов, и глючный (почему-то червяки плодятся именно под IIS), и поэтому дорогой.
Настраивать Apache можно по-разному. Кому-то хочется, чтобы на его страницы можно было переходить только по ссылкам с титульной, кому-то хочется, чтобы при отсутствии в папке индексного файла выводилось содержимое папки, кому-то хочется сам индексный файл переименовать в default.htm… Нет никаких проблем, если вы один на своем личном сервере — редактируете настройки Apache как вам хочется, и все пучком. А если вы пользуетесь чужим хостингом?
Представьте себе ситуацию, когда администраторы веб сервера мужественно рожают новые настройки по каждой новой заявке, которая противоречит предыдущей. Что получится? Правильно, ничего работать ни у кого не будет. А теперь представьте, что настройки у всех одинаковые, т.е. такие, какие нужны большинству (которое, как это обычно бывает, вовсе даже не большинство, а просто стадо). В обоих случаях нормальному человеку делать будет нечего, как клепать уродские сайты. На помощь человечеству приходит .htaccess — конфигурационный файл Apache HTTP Server С помощью этого чудесного файла можно изменять настройки Apache применительно к конкретным папкам конкретного пользователя. На самом деле далеко не всегда этот файл так называется, и работать он будет тоже далеко не всегда. Все опять зависит от настроек Apache. В файле настройки Apache есть несколько директив, а именно AccessFileName и AllowOverride. Первая задает имя файла настройки (по умолчанию .htaccess), вторая разрешает/запрещает его использование в папке. Чтобы работали настройки .htaccess, обе директивы должны быть настроены соответствующим образом. Кстати, большинство бесплатных хостингов, хотя и держат у себя Apache, использование .htaccess не разрешают, но всё жё такие можно найти. В первую очередь убедитесь, что ваш сервер использование .htaccess разрешает. Для этого можно создать файл .htaccess (он должен лежать в настраиваемой папке, т.е. в корне), состоящий из одной только строки:
ErrorDocument 404 /404.htm
В 404.htm запишите что-нибудь типа
<html>
<head>
<title>Ошибка 404 — не найдено</title>
</head>
<body>Запрашиваемый документ был перемещён или удалён.</body>
</html>
Теперь попробуйте набрать что-то типа http://ваш-сайт.дм/notfound/. Если выдалась страница с надписью об ошибке, значит .htaccess у вас работает. Кстати, вот и первое семейство директив. Вы можете настроить реакцию сервера на любую ошибку, используя конструкцию
ErrorDocument номерошибки /имяфайла.html
Номера ошибок расшифровываются так:
- 401 — Требуется авторизация (Authorization Required)
- 403 — Доступ запрещен (Forbidden)
- 404 — Страница не найдена (Not Found)
- 500 — Ошибка в скрипте или внутренняя ошибка сервера (Internal Server Error)
Еще одна важная директива позволяет настроить тот самый многострадальный индексный файл. Например, можно изменить index.shtml на home.php:
DirectoryIndex home.php
Следующие директивы указывают, в какую кодировку Apache должен перекодировать файлы, и в какой кодировке вы их на сервер закачиваете. Напоминаю, что кодировка может быть еще, например, koi8-r.
CharsetDefault windows-1251
CharsetSourceEnc windows-1251
Еще обычно получается плохо, когда пользователь может посмотреть список файлов в папке, если там нет индексного файла. Чтобы избежать этого эффекта, необходимо добавить в .htaccess строчку
Options -Indexes
Или, например, злобные хостеры заботится о загрузке процессора своего сервера, и заставляет делать файлам с SSI-директивами расширение shtml… Изменить это легко и просто, добавлением в .htaccess всего одной только строчки:
AddHandler server-parsed .shtml .shtm .htm .html
Теперь, как нетрудно догадаться, все перечисленные расширения будут знаменовать собой файл, содержащий SSI включения. А вот чтобы использовать в .html файлах PHP включения, придется сделать немного хитрее, так как придется учитывать то, что SSI и PHP в одном файле использовать нельзя. Надо писать так:
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml
Еще может возникнуть проблема, заключающаяся в том, что закачиваемые на сервер скриптом файлы получаются в неправильной кодировке. Можно попробовать решить ее так:
<Location /path/to/upload.cgi>
CharsetDisable On
</Location>
Это основные директивы управления сервером с помощью очень полезного .htaccess
http://www.f1user.net/