Хостинг в Україні: .HTACCESS. Синтаксис файлу .htaccess (практично повністю: .htpasswd, редирект (Redirect) та ін.) - Хостинг в Україні

.HTACCESS. Синтаксис файлу .htaccess (практично повністю: .htpasswd, редирект (Redirect) і т.д.)

#1 Aladdin

  • ПІБ: Праведно-Щасливий Аладдін Ярославович

Викладаю у форум, тому що ЦМСка постійно відрізає вижні моменти наданого тут коду.

Дані рекомендації тестувалися на веб-сервері Apache/1.3.20 [http://apache.org] під операційну систему Windows 95/98 4.10 [http://microsoft.com]

Зміст

Навіщо служить .htaccess? Синтаксис .htaccess Налаштування сервера Apache для використання файлу .htaccess

Заборони доступу:

  • Заборона на всі файли
  • Дозволити доступ тільки з певного ip
  • Заборонити доступ тільки для певного ip
  • Заборона доступу до групи файлів за маскою
  • Заборона доступу до конкретного файлу

Установка пароля:

  • Пароль на директорію
  • Пароль лише на 1 файл
  • Пароль на групу файлів
  • Є 3 директорії (дві з них вкладені в першу), доступ до них – за паролем. Але, і всіх, що ввійшли по паролю в директорію 1 не можна пускати в дві директорії. Як зробити?

Кодування:

  • Чи можна вказати кодування на всі файли, де за замовчуванням отримує документи браузер?
  • Чи можна вказати кодування на файли, що завантажуються?
  • Я закачую на сайт файл в одному кодуванні, а Apache їх перекодує, як позбутися?
  • Як використовувати різні кодування для різних типів файлів?

Часті помилки:

  • Створив файл .htaccess, але сервер видає 500 помилку - Internal Erorr

Для чого служить .htaccess?

Директоріїuser1 і user2 будуть вкладені по відношенню до директорії user. Якщо ми помістимо в директорію www файл .htaccess, його дію буде автоматично поширюватися і директорії user1 і user2. У директорію data поміщаємо інший файл .htaccess, в порівнянні з тим, що знаходиться в директорії user. І для директорій data1 і data2 діятиме файл .htacсess, що у data. Тепер, в директорію user2 ми поміщаємо ще один файл .htaccess, який відрізняється від того, що знаходиться в директорії двома рівнями вище (це директорія user). У результаті налаштування для директорії user2 будуть визначатисятільки тим файлом .htaccess, який знаходиться в цій директорії. Оскільки найчастіше Апач налаштований так, що завжди шукає цей файл у директорії, то .htaccess допоможе вам швидко і без зупинки сервера зробити його переналаштування.

Синтаксис .htaccess

Ось обов'язковий синтаксис, недотримання якого призводить до помилок сервера: - шляхи до файлів (директорій) вказуються від кореня сервера. Приклад: - домени із зазначенням протоколу Приклад:

Файл має назву саме "точка" htaccess Повинен бути записаний у UNIX-форматі. Для оболонки FAR досягається F4 (редагування файлу), Shift+F2 (вибрати "зберегти як UNIX-текст").

Налаштування сервера Apache для використання файлу .htaccess

Для використання файлу. Приклад: - домени із зазначенням протоколу Приклад: Файл має назву саме "точка" htaccess Мовить бути записаний у UNIX-форматі. Для оболонки FAR досягається F4 (редагування файлу), Shift+F2(Вибрати "зберегти як UNIX-текст").

Заборона на всі файли:

Деall означає "все".

Дозволити доступ тільки з певного ip:

Заборонити доступ для певного IP:

Використання аналогічно прикладу вище.

Заборона доступу до групи файлів за маскою:

Визначає доступ до файлу для його розширення. Наприклад, заборона доступу до файлів із розширенням "inc" для веб-відвідувачів:

У цьому прикладі сам веб-сервер Апач може звертатися до файлів з такими розширеннями, на відміну від відвідувачів сайту.

Заборона доступу до конкретного файлу: Можна поставити заборону на конкретний файл за його назвою та розширенням.

В даному прикладі стоїть заборона на звернення до файлу config.inc.php відвідувачами сайту, сам сервер може використовувати цей файл.

Пароль на директорію:

Пароль тільки на 1 файл: Аналогічно паролювання директорії повністю, можна ставити пароль тільки на 1 файл. Приклад встановлення пароля на файл private.zip:

Пароль на групу файлів: Аналогічно, використовуючи , можна ставити паролі по масці файлів. Приклад встановлення пароля на доступ до всіх файлів з розширенням "sql":

Перевірка прав доступу

Завдання: є каталог a1 і в ньому два вкладені каталоги a2, a3, введено 2 рівні користувачів. 1 група має доступ тільки до a1 та a2, 2-а до всіх трьох каталогів. Необхідно проводити аутентифікацію лише 1 раз - при доступі до a1, але при цьому дотримуватися права доступу до а2 і а3. Нік і пароль запитуються тільки при вході на а1 - якщо юзвер має доступ на а2 пароль вже не запитується. Якщо а3 доступу немає, вилетить табличка " введіть пароль " . www.site.ru/a1 www.site.ru/a1/а2 www.site.ru/a1/a3 a1 - загальний і водночас закритий. а2 і а3 лише окремих осіб.

файл .htaccess для каталогу а1:

файл .htaccess для каталогу а2:

файл .htaccess для каталогу а3:

Як зробити перенапрямок (редирект) відвідувача?

Редирект на інший url: Що б зробити перенаправлення відвідувача на сайт http://site.ru в .htaccess пишемо:

Як зробити стартовою іншу сторінку? Що б змінити сторінку, яка буде показуватися при зверненні до директорії, пишемо:

Можна вказати кілька сторінок.

Як змусити Апач обробляти SSI директиви? SSI дозволяють "збирати" сторінку зі шматочків. В одному шматочку у вас код меню, в іншому код верхньої частини сторінки, в третьому – нижній. А відвідувач бачить звичайну сторінку, яка складається з коду, який входить у ваші шматочки. Необхідніобов'язкові установки в httpd.conf: У блоці, що починається з і закінчується в рядок Options Indexes, додайте Includes. Після, у файлі .htaccess пишемо:

Як змусити Апач виконувати php код у файлах з розширенням відмінним від php? Реально використовується для індексації пошуковою системою Rambler PHP-скриптів. Деякі роблю дрібні фішки, на кшталт того, що дають фалам розширення, що збігаються з якими-небудь "знаковими" іменами. Наприклад, на сайті www.osg.ru використовують файли з розширенням osg: index.osg, script.osg і т.п. Такі можливості досягаються простим перерівнянням обробника файлів:

Зауважте, оскільки файли з розширенням .html і .htm порівняно, що цефайли з гіпертекстової розміткою, ми першим рядком прибираємо це зіставлення і додаємо обробку таких файлів php інтерпретатором.

Припустимо, ви змінили платформу хостингу (NT to Unix), а ваші відвідувачі залишили точні закладки на ваші файли. Тоді прописуємо обробку .asp файлів, як php скриптів і вже у скрипті вирішуємо, що робити з відвідувачем:

На відміну від прикладу вище, ми не пишемо RemoveHandler . , тому що на Unix системах зазвичай з розширенням .asp не зіставлена ​​жодна програма. При великій відвідуваності сервера такі хитрощі можуть викликати гальма. Запитуйте у адміна.

При цьому при виникненні 401 помилки користувачеві завантажиться файл errors/401.html і так далі, відповідно.

Зручно робити власний обробник деякі помилки. У .htaccess пишемо:

В error.php через $HTTP_SERVER_VARS['REQUEST_URI'] визначаємо, який документ викликав помилку і далі обробляємо. Якщо в .htaccess на ErrorDocument стоїть вказівка ​​файлу з повним шляхом ( www.site.ru/error.php ), $HTTP_SERVER_VARS['REQUEST_URI'] буде містити цей файл, а не викликав помилку. В Internet Explorer 5.0 неправильно обробляється файл, що викликається при помилці, якщо його розмір менше 1 кілобайта. Буде викликано стандартну сторінку IE 404.

Чи можна вказати кодування на всі файли, в якому за замовчуванням отримує документи браузер? кодувань написано документ і в браузер видавалася якась каша. Для уникнення цього вказуємо, що всі сторінки, що віддаються, матимуть кодування windows-1251:

Чи можна вказати кодування на файли, що завантажуються? При завантаженні файлу насервер (не важливо ким - адміном або відвідувачем), можливе перекодування його - вказуємо, що всі файли, що отримуються, будуть мати кодування windows-1251:

Я закачую на сайт файл в одному кодуванні, а Apache їх перекодує, як позбутися? Акутально для "українського Apache" [ http://apache.leha.ru ] потрібно скасувати перекодування сервером файлів. Наприклад, скасовуємо перекодування файлу scriptName.php

Як застосовувати різні кодування для різних типів файлів? Припустимо, що вам необхідно встановити кодування windows-1251 на всі файли з розширенням .htm та кодування koi-8r на всі файли з розширенням .htm :

Створив файл .htaccess, але сервер видає 500 помилку - Internal Erorr Помилка синтаксису або файл записаний не в тому форматі. Перевірте синтаксис у своєму файлі із синтаксисом, зазначеним у цій статті.