Як відомо, самим популярним на сьогоднішній день веб-сервером є Apache в різних версіях (а зовсім не IIS, як стверджує Microsoft). Його ставлять на свої сервера більшість хостителей, послуга ж «NT-хостингу» (тобто якраз IIS) зазвичай коштує дорожче. Воно і зрозуміло — і незручний він для звиклих до Linux адмінів, і глючний (чомусь черв’яки розмножуються саме під IIS), і тому дорогий.

Налаштувати Apache можна по-різному. Комусь хочеться, щоб на його сторінки можна було переходити за посиланнями з титульної, комусь хочеться, щоб при відсутності в папці індексного файлу виводилося вміст папки, комусь хочеться сам індексний файл перейменувати в yakrutoiadmin.html… Немає ніяких проблем, якщо ви один на своєму особистому сервері — редагуєте налаштування Apache як вам хочеться, і все пучком. А якщо ви користуєтеся чужими хостингом?

Уявіть собі ситуацію, коли доблесний Антон Нехороших (адмін на Valuehost’e) мужньо народжує нові налаштування по кожній новій заявці, яка суперечить попередній. Що вийде? Правильно, нічого працювати ні в кого не буде. А тепер уявіть, що налаштування у всіх однакові, тобто такі, які потрібні більшості (яка, як це зазвичай буває, зовсім навіть не більшість, а просто стадо). В обох випадках нормальній людині робити буде нічого, як клепати бридкі сайти.

На допомогу людству приходить .htaccess — захисник усього живого на планеті! З допомогою цього чудового файлу можна змінювати налаштування Apache стосовно до конкретних папок конкретного користувача. Насправді далеко не завжди цей файл так називається, і працювати він буде теж далеко не завжди. Все знову залежить від налаштувань апача.

У файлі налаштування Apache є кілька чудових директив, а саме AccessFileName і AllowOverride. Перша задає ім’я файлу налаштування за замовчуванням .htaccess), друга дозволяє/забороняє її використання в папці. Щоб працювали налаштування .htaccess, обидві директиви повинні бути налаштовані відповідним чином. Тільки переконавшись у тому, що це так, можна починати створювати власний варіант захисника всього живого. До речі, більшість безкоштовних хостингів, хоча і тримають у себе Apache, використання .htaccess не дозволяють.

У першу чергу переконайтеся, що ваш сервер використання .htaccess дозволяє. Для цього можна створити файл .htaccess (він повинен лежати в настроюваної папці, тобто в корені), що складається з однієї лише рядки:

ErrorDocument 404 /missing.html

В missing.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 повинен перекодувати файли, і в якому кодуванні ви їх на сервер закачуєте. Нагадую, що кодування може бути ще, наприклад, 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

Ще може виникнути проблема, яка полягає в тому, що завантажені на сервер скриптом файли виходять в неправильному кодуванні. Можна спробувати вирішити її так:

CharsetDisable On

Більш детальна інформація про директиви .htaccess вже не відноситься до розділу FAQ-документів, і може обговорюватися на форумі. Залишається додати, що вкрай складно умовити Notepad, в якому і редагують файли, зберегти файл без імені, та ще й з таким нестандартним розширенням, як .htaccess. Необхідно зберегти його з типом «Всі файли/All files» і тшательно простежити, що розумний Notepad не виправив «помилку».