Apache: налаштування веб-сервера, файл .htaccess

Apache: налаштування веб-сервера, файл .htaccess

1. Що таке Apache?

Веб-сервер Apache використовується у нас на хостингу як основний. Apache є основою більшості веб-серверів світу і являється найбільш розповсюдженим веб-сервером. Причинами його популярності є такі факти як легка і широка можливість конфігурації, швидкодія, підтримка всіх нині відових протоколів. Спеціально для Apache були створені версії популярних мов програмування як Perl та PHP, а також цей веб-сервер легко інтегрується з розповсюдженими СУБД як MySQL.

Користувачі нашого хостингу мають можливість власноруч редагувати конфігурації Apache за допомогою відповідних дериктив в файлі .htaccess. Таким чином можна вирішити більшість задач конфігурації веб-сервера в умовах shared-хостингу.
Для ознайомлення конфіграції Apache рекомендуємо читати документації на офіційному сайті - http://httpd.apache.org/docs/

2. Файл .htaccess.

Файл .htaccess використовується для управління веб-сервером Apache зі сторони користувача хостингу. Цей файл складається з директив, які веб-сервер аналізує і опрацьовує, виконуюючи дії відповідно до цих директив.

Файл .htaccess може бути розміщений як в кореневому каталозі так і в будь-якому його підкаталозі. Якщо файл .htaccess знаходиться в підкаталозі, то його директиви перекривають директиви файлу, який знаходиться в каталозі вище. Зміни файлу вступають у дію відразу ж, тому що при кожному звернені веб-сервер перечитує його зміст.

Зверніть увагу, що на початку назви файлу стоїть крапка, яку опускати не можна. В unix-подібних системах це означає, що файл є прихованим.

Якщо використання деякої директиви призвело до появи помилок або просто збою роботи сайту, наймовірніше ви прописали інструкцію, яка заборонена в умавах shared-хостингу. В такому випадку зверніться до support@hvosting.ua і ми спробуємо вирішити вашу проблему.

3.Приклад використання директив

3.1.Перевизначення кодування html-документу

Якщо вам потрібно, щоб веб-сервер "віддавав" всі html-документи в кодуванні koi8-r, а не в windows-1251(cp1251), як це сервер робить за замовчуванням, то потрібно у файл .htaccess помістити наступну інструкцію:

AddType "text/html; charset=koi8-r" .html .htm .shtml

Якщо на вашому ресурсі існують html-документи в різних кодуваннях (ISO-8859-1, Windows-1250, Windows-1252, UTF-8), то вам, можливо, буде необхідно примусово відключить видачу заголовка з кодуванням windows-1251. Для цього треба прописати наступну директиву:

AddDefaultCharset Off

Але в такому випадку відповідне кодування має бути прописаним на кожній html-сторінці у вигляді тега

<http-equiv="Content-type" content="text/html; charset=windows-1251" />

3.2. Захист директорії паролем

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

AuthType Basic
AuthName "Some Name"
AuthUserFile /home/example/data/.htpasswd
require valid-user

Шлях /home/example/data/.htpasswd є повним шляхом до файлу паролів на диску вашого серверу. Якщо ви, наприклад, помістите файл .htpasswd в домашній каталог, куди ви потрапляєте, заходячи по фтп, то шлях до файлу матиме саме вище вказаний шлях, де замість example має бути ваш хостинг-аккаунт.

Отже, в директиві AuthUserFile ми вказуємо абсолютний шлях до файлу .htpasswd, який містить логіни і паролі. Якщо ви створюєте файл .htaccess на своєму локальному комп'ютері, а не на нашому сервері, то передавати його по FTP обов'язково потрібно в текстовому (ASCII) режимі.

Файл .htpasswd зберігає дані рядками у вигляді: login:password. Пароль має бути зашифрованим з використанням алгоритму MD5. Один з варіантів створити такий файл - скористуватися програмою, яка входить в дистрибутив Apache - htpasswd.

Розглянемо приклади використання ціє команди в unix shell.

htpasswd -m .htpasswd user

Ця команда запитає у вас пароль і після цього внесе дані до файлу. Якщо файл .htpasswd ще не був створений, то потрібно додати ключ -c, але будьте обережні, якщо файл вже був створений, а ви використали цей ключ, то файл перепишеться. Тобто маємо команду:

htpasswd -mc .htpasswd user

3.3. Індексний файл.

Індексний файл - це той файл, який відкривається за замовчуванням при звертанні клієнта до каталогу, а не до конкретного файлу. Наприклад, клієнт набере в браузері наступну URL-адресу: http://example.in.ua/ чи http://example.in.ua/admin , де в першому випадку звертання йде до каталогу сайту, а в другому - до каталогу admin, який знаходиться безпосередньо в каталозі сайту, тобто файл в запиті не вказано. В такому випадку буде запущено на виконання індекний файл, результат його виконання й буде відправлено клієнту на його запит.
За замовчуванням індесним файлом є: index.html, index.htm, index.php, index.php3, index.phtml, index.shtml, default.htm або default.html. Але якщо у вас є бажання його перевизначити, наприклад на myindex.php, то вам в файлі .htaccess необхідно прописати наступну директиву (інструкцію):

DirectoryIndex myindex.php

3.4. Заборона та дозвіл лістингу файлів.

Бувають випадки, коли потрібно виводити список файлів в папці за відсутності визначення індесного файлу. Для цього достатньо прописати в .htaccess наступну інструкцію:

Options +Indexes

Цю інструкцію потрібно написати саме в тій папці, в якій ви плануєте дозволити лістинг. Дана інстуркція також буде дійсна для всіх підкаталогів, якщо у підкаталозі потрібно вимкнути лістинг, потрібно прописати інструкцію

Options -Indexes

Варто відмітити, що остання інструкція є за замовчуванням, якщо в директорії вище не зазначено протилежного. Коли ввімкнена опція -Indexes і індексний файл не вказаний сервер видає HTTP помилку 403.

3.5. Власні сторінки помилок.

Іноді відвідувачі вашого сайту запитують такі сторінки, яких на сервері немає по різноманітним причинам: чи то їхнє посилання не правильне, чи файли дійсно було помилково видалено. В такому випадку сервер видає наступну відповідь:

1.png

Але .htaccess надає альтернативу цим сторінкам.

3.6. Відмова в доступі певним IP-адресам.

Коли виникає необхідність заборонити доступ до сайту, або його частини, для певних IP-адресів пишемо наступні директиви:

Order Allow,Deny
Allow from All
Deny from 172.16.16.16

Тут відмовлюємо в доступі 172.16.16.16. Якщо буде здійснений запит з цієї адреси у відповідь сервер видасть 403 помилку або відповідну цій помилці вашу сторінку.

Якщо ви напишете адресу 172.16.16, то це означає заборонити доступ для всієї підмережі 172.16.16/24.

3.7. Відмова в доступі до певних файлів.

Також іноді виникає необхідність заборонити доступ до деяких файлів, наприклад до конфігураційних файлів, яка містять реквізити доступу до баз даних, інтерфейсів тощо. Нехай такий файл у вас config.cfg, тоді пишемо наступне:

<FilesMatch "\.(cfg)$">
Order allow,deny
Deny from all
</FilesMatch>

Тепер на запит цього файлу сервер відповість 403 помилкою або відповідною цій помилці вашою сторінкою.

3.8 Заголовок last-modified

Виникають ситуації коли потрібно, щоб веб-сервер видавав HTTP-заголовок Last-Modified. Наприклад, при реєстрації вашого ресурсу на Яндексі, виникає помилка "Неправильні дати". Для статистичних документів сервер буде видавати значення last-modified завжди. Це діє на html-файли. Для SSI cервер буде видавати значення last-modified лише тоді, коли прописана директива «XBitHack full» (просто пропишіть цей рядок в .htaccess), і для файлу, до якого звертаються виставіть права на виконання для групи. В скріптах last-modified видається іншими методами. Наприклад, враховуючи динамічне генерування коду php-скріптом, то логічно в якості last-modified віддавати поточну дату і час. Ось приклад реалізації:

<? header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); ?>

Варто звернути увагу на те, що команда header в обов'язковому порядку має виконуватись в скріпті до того, як скріпт почне видавати html-текст в браузер користувача.

3.9. Створення переадресації.

Якщо у вас є домени (необов'язково, щоб вони хостились разом) domain1.tld та domain2.tld, і вам потрібно, щоб при звертанні до domain2.tld відбувалось перенаправлення, то пропишіть наступне для домену domain2.tld:

Redirect 301 / http://domain1.tld/



*налаштування вказані для показового домену example.in.ua на сервері h56.hvosting.ua (аккаунт під назвою example), при роботі з хостингом використовуйте свої дані.


 
Укр | Рос

Український хостинг сайтів, аренда серверів, реєстрація доменних імен

 
Подзвонити нам
Служба підтримки
support@hvosting.ua
+38 (044) 337-57-89
+38 (068) 304-43-64
+38 (063) 849-75-78
+38 (098) 213-96-12
+38 (050) 903-99-59
 
 

Чи буде мені надана можливість встановити підкаталог, захищений паролем?

відповідь

Ваш сайт збільшуеться і йому потрібно більше місця під пошту, бази данних та файли?

всі акції
  • Оплатою квитанції в касі банку
  • Liqpay
  • Privat24
  • Visa/mastercard
 
Питання, відповіді та статті про хостинг

Чи підтримуєте ви Java Servlets і JSP?

Ні, не підтримуємо, принаймні поки. На наш погляд, в даному сегменті пропозиція і так перевищує попит.

Всі питання
Хостинг новини
Kyiv - not Kiev
Переходь на український домен - ваше_ім'я.kyiv.ua - і отримай домен за половину вартості ! Тому що: Kyiv - НЕ Kiev ! Замовляй домен тут: https://hvosting.ua/domains.html Вартість домена kyiv.ua - всього 180 грн !!! Увага! ця доменна зона - синонімічна, тобто зареєструвати домен .kyiv.ua з аналогічним словом може тільки поточний власник домена kiev.ua Наприклад: hvosting.kiev.ua ===> hvosting.kyiv.ua

Акція kharkiv.ua !
Харків говорить українською ! Переходь на український домен - ваше_ім'я.kharkiv.ua - і отримай домен за половину вартості ! Замовляй домен тут: https://hvosting.ua/domains.html Вартість домена kharkiv.ua - всього 185 грн !!! Увага! Ця доменна зона - синонімічна, тобто зареєструвати домен .kharkiv.ua з аналогічним словом може тільки поточний власник домена .kharkov.ua Наприклад: hvosting.kharkov.ua ===> hvosting.kharkiv.ua

Видалення доменів
Повідомляємо, що з 01.11.2023 починається процес остаточного видалення доменних імен, які зберігалися в реєстрі з початку повномасштабного вторгнення (24.02.2022) до 1.05.2023 Після видалення ці доменні імена будуть доступні для реєстрації будь-кому за принципом: перший прийшов - перший отримав. До 31.10.2023 включно реєстранти мають можливість відновити свої доменні імена з redemption period`у! Не втрачайте свої домени !

Акція KYIV.UA
Переходь на український домен - ваше_ім'я.kyiv.ua - і отримай домен за половину вартості ! Тому що: Kyiv - НЕ Kiev ! Замовляй домен тут: https://hvosting.ua/domains.html Вартість домена kyiv.ua - всього 180 грн !!! Увага! ця доменна зона - синонімічна, тобто зареєструвати домен .kyiv.ua з аналогічним словом може тільки поточний власник домена kiev.ua Наприклад: hvosting.kiev.ua ===> hvosting.kyiv.ua

Зміна умов відновлення доменів із стану RedeptionPeriod з 01.05.2023
Повернення умов реєстрації доменів. З 1.05.2023 RedeptionPeriod становитиме 30 днів в реєстрах Хостмайстер.

Оплата через термінали Ibox
Друзі, ми додали ще один спосіб оплати хостингу та доменів: термінали Ibox. Як оплатити БЕЗ комісії ...

З Днем Незалежності, моя Україно!
Добра Бажаю, друзі вам сповна, Тепла і затишку у дім І перемоги нам усім! Нехай в житті вам пощастить, Дарує радість навіть мить, Весніє на душі розмай І мирним буде небокрай!

Архів RSS