|
- Root, 26.08.2003, F1User.net -
Как известно, самым популярным на сей день
веб-сервером является 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
|