Хостинг в Україні: .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 Помилка синтаксису або файл записаний не в тому форматі. Перевірте синтаксис у своєму файлі із синтаксисом, зазначеним у цій статті.